【问题标题】:Debugging Swift / Objective-C调试 Swift / Objective-C
【发布时间】:2015-12-17 15:23:53
【问题描述】:

我有一个名为 PaymentInfo 的 Parse 子类,定义为

class PaymentInfo: PFObject, PFSubclassing {

override class func initialize() {
    var once: dispatch_once_t = 0;
    dispatch_once(&once) {
        self.registerSubclass()
    }
}

static func parseClassName() -> String {
    return "PaymentInfo"
}

@NSManaged var paymentUserID: String!
@NSManaged var walletID: String!

convenience init(userID: String, walletID: String) {
    self.init()
    self.paymentUserID = userID
    self.walletID = walletID
}

}

在 lldb 中调试时,我得到一个实例并查看成员

(lldb) expr self.paymentInfo
(Nestor.PaymentInfo!) $R0 = 0x00007f9e15805740 {
  Parse.PFObject = {...}
}
(lldb) po $R0
<PaymentInfo: 0x7f9e15805740, objectId: 2gKS5LhD35, localId: (null)> {
    paymentUserID = 10104705;
    walletID = 10104706;
}

到目前为止一切顺利。但我不明白的是:

(lldb) expr $R0.paymentUserID
2015-12-17 16:09:17.432 Nestor[3474:482967] -[PFObject paymentUserID]: unrecognized selector sent to instance 0x7f9e15805740
error: Execution was interrupted, reason: internal ObjC exception breakpoint(-3)..
The process has been returned to the state before expression evaluation.

显然,lldb 知道 $R0 是(合格)类型 Nestor.PaymentInfo 的 IUO!但是当询问 paymentUserID 属性时,信息丢失了......为什么?

还是我错过了什么?

谢谢

B

【问题讨论】:

    标签: swift lldb


    【解决方案1】:

    这必须在 Xcode 7.2 中修复,因为它适用于我使用您的课程。

    【讨论】:

    • 很奇怪,因为我也使用 Xcode 7.2。如何检查 Xcode 实际使用的开发工具的版本?也许由于某种原因它使用了旧版本...
    • 我也在运行 iPad Air 2 模拟器。在 Xcode 首选项中,您可以检查位置。我有 Xcode 7.2 (7C68)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多