我在最近工作的项目中有类似下面的代码。
@interface DetailsViewController : UIViewContoller {
UIView* headerView_;
}
@property (nonatomic, retain) UIView* headerView;
@end
@implementation DetailsViewController
@synthesize headerView = undefinedVariableName_;
// ...
@end
undefinedVariableName_
未在项目的任何地方定义,实际上是一个不太明显的错字。
这编译得非常好(没有错误或警告),甚至在iOS 4上运行正常。直到程序在3.1.3固件上崩溃才发现此错误。
有人知道上述行为是否被视为未定义?有没有办法让编译器捕获这样的错误?
答案 0 :(得分:1)
在现代Objective-C运行时,您不必自己声明ivars,编译器将在@synthesize
处为您创建它们。如果它在较旧的iOS上崩溃,那么这个版本可能还不支持现代运行时。