是什么导致我的AppDelegate中的self未定义?

时间:2015-07-01 04:56:03

标签: ios swift lldb

我已经在应用程序上工作了几个星期,然后做了一个主要的重构,并且不知何故打破了我的应用代表。

如果我在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
    }

}

2 个答案:

答案 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