是什么导致我的 AppDelegate 中的 self 未定义?
What is causing self to be undefined in my AppDelegate?
我已经在一个应用程序上工作了几个星期,然后进行了一次重大重构,但不知何故破坏了我的应用程序委托。
如果我在 applicationDidFinishLaunchingWithOptions
中放置一个断点,然后键入 p self
,我会看到以下错误:
error: <EXPR>:1:1: error: use of unresolved identifier 'self'
self
^
如果我在 applicationDidBecomeActive
中放置一个断点并输入 p self
那么我不会收到任何错误并且 self 似乎是正确的 "defined"。
如果我从一个新项目开始我就不会遇到这个问题。
我的AppDelegate.swift
如下:
import UIKit
import CoreLocation
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
return true
}
}
"self" 对于表达式求值器来说比您天真地认为的要棘手。它不能只告诉编译器有关变量的信息,它必须让编译器相信表达式中的代码在方法上下文中是 运行,无论 class "self" 恰好是什么,然后编译器会推断出 self 的存在。否则像 bare ivar 访问和方法调用之类的东西将无法工作。
最初这个小两步有很多问题,但这些问题应该由 Xcode 7 解决。如果您在 Xcode 7 中看到这个问题,请提交错误我们来看看。
所以我在Xcode 7 试了一下,我可以p self
成功。
然后我切换回 Xcode 6,p self
又开始工作了。
几乎确认这是一个错误,解决方法是 运行 您在 Xcode 7 中的项目,而不更新您的语法(我不得不暂时注释掉一些无法编译的代码Xcode7),然后切换回Xcode6.
我已经在一个应用程序上工作了几个星期,然后进行了一次重大重构,但不知何故破坏了我的应用程序委托。
如果我在 applicationDidFinishLaunchingWithOptions
中放置一个断点,然后键入 p self
,我会看到以下错误:
error: <EXPR>:1:1: error: use of unresolved identifier 'self'
self
^
如果我在 applicationDidBecomeActive
中放置一个断点并输入 p self
那么我不会收到任何错误并且 self 似乎是正确的 "defined"。
如果我从一个新项目开始我就不会遇到这个问题。
我的AppDelegate.swift
如下:
import UIKit
import CoreLocation
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
return true
}
}
"self" 对于表达式求值器来说比您天真地认为的要棘手。它不能只告诉编译器有关变量的信息,它必须让编译器相信表达式中的代码在方法上下文中是 运行,无论 class "self" 恰好是什么,然后编译器会推断出 self 的存在。否则像 bare ivar 访问和方法调用之类的东西将无法工作。
最初这个小两步有很多问题,但这些问题应该由 Xcode 7 解决。如果您在 Xcode 7 中看到这个问题,请提交错误我们来看看。
所以我在Xcode 7 试了一下,我可以p self
成功。
然后我切换回 Xcode 6,p self
又开始工作了。
几乎确认这是一个错误,解决方法是 运行 您在 Xcode 7 中的项目,而不更新您的语法(我不得不暂时注释掉一些无法编译的代码Xcode7),然后切换回Xcode6.