【问题标题】:What is causing self to be undefined in my AppDelegate?是什么导致我的 AppDelegate 中的 self 未定义?
【发布时间】:2015-07-01 04:56:02
【问题描述】:

我已经在一个应用程序上工作了几周,然后进行了一次重大重构,并且不知何故破坏了我的应用程序委托。

如果我在applicationDidFinishLaunchingWithOptions 中设置断点,然后键入p self,我会看到以下错误:

error: <EXPR>:1:1: error: use of unresolved identifier 'self'
self
^

如果我在 applicationDidBecomeActive 中设置断点并输入 p self,那么我不会收到任何错误,并且 self 似乎被正确“定义”了。

如果我从一个新项目开始,我没有这个问题。

我的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
    }

}

【问题讨论】:

  • 经过多次谷歌搜索,这似乎是一个 lldb 错误,因为frame variable -L self 成功显示了 self 的内容。

标签: ios swift lldb


【解决方案1】:

"self" 对于表达式求值器来说比你天真的想的要复杂。它不能只告诉编译器这个变量,它必须让编译器相信表达式中的代码是在方法上下文中运行的,无论“self”是什么类,然后编译器会推断 self 的存在.否则,诸如裸 ivar 访问和方法调用之类的事情将无法正常工作。

这个小两步最初有很多问题,但这些问题应该已按 Xcode 7 排序。如果您在 Xcode 7 中看到此问题,请提交错误,我们会看看。

【讨论】:

    【解决方案2】:

    所以我在 Xcode 7 中尝试了它,我可以成功地p self

    然后我切换回 Xcode 6,p self 再次工作。

    几乎确认这是一个错误,解决方法是在 Xcode 7 中运行您的项目,而不更新您的语法(我不得不暂时注释掉一些在 Xcode 7 中无法编译的代码),然后切换回 Xcode 6 .

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 2017-05-01
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多