【问题标题】:Is this undefined behaviour with Objective-C properties?这是 Objective-C 属性的未定义行为吗?
【发布时间】:2010-09-20 18:23:23
【问题描述】:

在我最近从事的一个项目中,我有类似下面的代码。

@interface DetailsViewController : UIViewContoller {
  UIView* headerView_;
}
@property (nonatomic, retain) UIView* headerView;
@end

@implementation DetailsViewController
@synthesize headerView = undefinedVariableName_;
// ...
@end

undefinedVariableName_ 没有在项目的任何地方定义,实际上是一个不太明显的错字。

这编译得非常好(没有错误或警告),甚至在 iOS 4 上运行良好。直到程序在 3.1.3 固件上崩溃时,我才发现这个错误。

有谁知道上述行为是否被认为是未定义的?有没有办法让编译器捕捉到这样的错误?

【问题讨论】:

    标签: iphone objective-c properties


    【解决方案1】:

    在现代 Objective-C 运行时中,您不必自己声明 ivars,编译器会在 @synthesize 处为您创建它们。如果它在旧 iOS 上崩溃,这个版本可能还不支持现代运行时。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    • 2011-08-23
    相关资源
    最近更新 更多