Обеспечивает ли Objective-C инициализацию данных члена интерфейса?
В интерфейсе, таком как:
@interface MyClass : NSObject
{
bool PlainOldBool;
}
@end
... does PlainOldBool
получает автоматически инициализированное значение false или необходимо использовать метод init для этого явно?
Ответы
Ответ 1
Да (если ваш false
не равен 0). По умолчанию метод +alloc
/+allocWithZone:
автоматически отключит все ivars.
От https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW17
- Он инициализирует все остальные переменные экземпляра равными нулю (или эквивалентным типу для нуля, например
nil
, NULL
и 0.0
).
Ответ 2
Также стоит отметить, что если вы делаете Objective-C ++, объекты С++, которые являются ivars объектов Objective-C, не инициализируются: их конструкторы по умолчанию не вызываются.