【问题标题】:handling appDelegate in my app在我的应用程序中处理 appDelegate
【发布时间】:2012-07-17 17:32:57
【问题描述】:

我是 iOS 应用程序开发的新手,我的第一个应用程序的开发工作已接近完成。所以现在开始收尾工作,其中包括我的应用程序在达到某些事件或状态时应该如何表现。我知道处理此类任务的代码进入appDelegate.m,但我对我实际上应该做什么感到有点困惑。我的应用程序很简单,它会在按下按钮时触发带有声音的动画,并且我希望声音在用户点击主页按钮时立即停止。我试过了,但没有成功:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    finalViewController.AudioServicesDisposeSystemSoundID(soundID)
}

此外,当我按两次主页按钮标志并尝试关闭我的应用程序时,我的应用程序也会崩溃。它给了我main.m 中的'signal SIGABRT' 错误。请帮忙。

【问题讨论】:

  • FWIW,当您双击-x 您的应用程序连接到调试器时的预期行为时崩溃。

标签: objective-c ios xcode cocoa-touch


【解决方案1】:

尝试在此处进行操作:

- (void)applicationWillResignActive:(UIApplication *)application{}

或许

- (void)applicationWillTerminate:(UIApplication *)application{}

【讨论】:

  • 不,实际上问题是它说“使用未声明的标识符soundID”,即使我已将它作为我的 VC 中的属性公开,并且我已将我的 VC 导入我的委托。
  • ...WillTerminate: 不是...DidEnterBackground: 的合理替代品——它意味着不同的东西。
【解决方案2】:

你说你遇到了这样的错误:

使用未声明的标识符 soundID

如果soundID 是您的应用委托的属性,您应该使用属性表示法访问它,例如:

self.soundID

或:

[self soundID]

“未声明的标识符”意味着当你说soundID 时编译器不知道你在说什么。支持该属性的实例变量可能具有不同的名称(例如 _soundID),因此 soundID 并不指代 ivar 本身,它只是属性名称。

【讨论】:

  • 基于 cmets 添加一些东西...如果您已将视图控制器“导入”到委托中并且它具有属性 soundID,那么您将通过 nameOfViewController.soundID 访问它。
【解决方案3】:

使用给定的代码 sn-p 停止声音并访问您在AudioServicesPlaySystemSound(soundID) 中传递的soundId。您可以在appDelegate 中创建soundId 变量并在播放系统声音时保存soundId

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    AudioServicesDisposeSystemSoundID(soundID)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    相关资源
    最近更新 更多