Гарантирует ли Objective-C инициализацию данных члена интерфейса? - PullRequest
10 голосов
/ 28 марта 2010

В таком интерфейсе:

@interface MyClass : NSObject
{
    bool PlainOldBool;
}

@end

... действительно ли PlainOldBool автоматически инициализируется значением false, или необходимо использовать метод init, чтобы сделать это явно?

Ответы [ 2 ]

24 голосов
/ 28 марта 2010

Да (, если ваш false не равен 0 ). Метод +alloc / +allocWithZone: по умолчанию автоматически обнуляет все ивары.

С https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW17

  • Он инициализирует все остальные переменные экземпляра нулем (или эквивалентным типом для нуля, таким как nil, NULL и 0.0).
4 голосов
/ 28 марта 2010

Также стоит отметить, что если вы выполняете Objective-C ++, объекты C ++, которые являются иварами объектов Objective-C, не инициализируются: их конструкторы не вызываются по умолчанию.

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