Это неопределенное поведение со свойствами Objective-C? - PullRequest
1 голос
/ 20 сентября 2010

У меня был что-то вроде следующего кода в проекте, над которым я недавно работал.

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

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

undefinedVariableName_ не был определен где-либо в проекте и на самом деле был гораздо менее очевидной опечаткой.

Это прекрасно скомпилировано (без ошибок и предупреждений) и даже нормально работало на iOS 4. Я не улавливал эту ошибку, пока программа не вылетала на прошивке 3.1.3.

Кто-нибудь знает, является ли вышеуказанное поведениесчитается неопределенным?Есть ли способ заставить компилятор ловить такие ошибки?

1 Ответ

1 голос
/ 20 сентября 2010

В современной среде выполнения Objective C вам не нужно объявлять ivars самостоятельно, компилятор создаст их для вас в точке @synthesize.Если он вышел из строя на старой iOS, эта версия, вероятно, еще не поддерживает современную среду выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...