1
我在最近的一個項目中使用了以下代碼。這是未定義的行爲與Objective-C屬性?
@interface DetailsViewController : UIViewContoller {
UIView* headerView_;
}
@property (nonatomic, retain) UIView* headerView;
@end
@implementation DetailsViewController
@synthesize headerView = undefinedVariableName_;
// ...
@end
undefinedVariableName_
沒有在項目中的任何地方定義,實際上是一個不太明顯的錯字。
這編譯完美(沒有錯誤或警告),甚至在iOS 4上運行良好。直到程序崩潰在3.1.3固件上,我沒有發現這個錯誤。
有誰知道上述行爲是否被認爲是未定義的?有沒有辦法讓編譯器捕獲這樣的錯誤?
我相信iOS一直使用現代運行時。 http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html – 2010-09-20 18:38:33
我認爲@David有一個好點,但是謝謝@Sven指出編譯器可以實際自動創建ivars。 – 2010-09-21 02:11:53