swift 和 didFinishLaunchingWithOptions 的 cocos2d CCAppDelegate 问题

Posted

技术标签:

【中文标题】swift 和 didFinishLaunchingWithOptions 的 cocos2d CCAppDelegate 问题【英文标题】:cocos2d CCAppDelegate issue with swift and didFinishLaunchingWithOptions 【发布时间】:2014-08-09 01:21:01 【问题描述】:

还有其他人在使用 xcode 6 beta 5 在 Swift 上运行简单的 Cocos2d v3.1 时遇到问题吗?

@UIApplicationMain class AppDelegate : CCAppDelegate, UIApplicationDelegate 

override func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool

    setupCocos2dWithOptions([CCSetupShowDebugStats: true])

    return true


override func startScene() -> (CCScene)

    return HelloWorldScene()

我在自己的项目中遇到了问题,但我在 github 上找到了一个示例项目,但存在同样的问题: https://github.com/chunkyguy/Cocos2dSwift

didFinishLaunchingWithOptions 函数有错误: 使用选择器 'application:didFinishLaunchingWithOptions:' 的覆盖方法具有不兼容的类型 '(UIApplication!, NSDictionary!) -> Bool'

将函数签名更改为:

override func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]) -> Bool

修复了编译器错误,但应用程序因 AppDelegate 上的 EXC_BAD_ACCESS 而崩溃。

有没有人遇到过这个问题或可以提出解决办法?

【问题讨论】:

【参考方案1】:

所以我没有清楚地详细阅读错误消息。我错过了感叹号,因为我复制并粘贴了 UIApplicationDelegate 快速生成的标题。我应该输入:

override func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]!) -> Bool

点击 UIApplication 委托的命令会显示:

protocol UIApplicationDelegate : NSObjectProtocol 
... 
optional func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]) -> Bool

即没有 '!'s

【讨论】:

以上是关于swift 和 didFinishLaunchingWithOptions 的 cocos2d CCAppDelegate 问题的主要内容,如果未能解决你的问题,请参考以下文章

使用适用于 iOS 10 的 UNUserNotificationCenter

FIRInstanceID 在 FIRInstanceIDAPNSTokenType.Sandbox 中变为零

当应用程序处于终止模式时,如何从推送通知重定向到特定的视图控制器

swift可以和oc混合编写吗

ios 整理(一)swift和oc的区别

Swift3.0 - 黑魔法swizzle