我已经在应用程序上工作了几个星期,然后做了一个主要的重构,并且不知何故打破了我的应用代表。
如果我在applicationDidFinishLaunchingWithOptions
中放置断点,并输入p self
,我会看到以下错误:
error: <EXPR>:1:1: error: use of unresolved identifier 'self'
self
^
如果我在applicationDidBecomeActive
中设置断点并输入p self
,那么我就不会收到任何错误,并且自我似乎已被定义为&#34;正确。
如果我从一个新项目开始,我就不会遇到这个问题。
我的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
}
}
答案 0 :(得分:1)
&#34;自&#34;对于表达式评估器来说比你天真的想法更难。它不能告诉编译器有关变量的信息,它必须说服编译器表达式中的代码在任何类的方法上下文中运行&#34; self&#34;碰巧是,然后编译器会推断出self的存在。否则,像裸ivar访问和方法调用之类的东西将无法正常工作。
这个小步骤最初有一堆问题,但这些问题应该由Xcode 7排序。如果你在Xcode 7中看到这个问题,请提交错误,我们来看看。
答案 1 :(得分:0)
所以我在Xcode 7中尝试过,我可以成功p self
。
然后我切换回Xcode 6并且p self
再次正常工作。
几乎确认它是一个错误,解决方法是在Xcode 7中运行你的项目,而不更新你的语法(我不得不暂时注释掉一些不能在Xcode 7中编译的代码),然后切换回Xcode 6