Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C是否保证接口成员数据的初始化?_Objective C - Fatal编程技术网

Objective-C是否保证接口成员数据的初始化?

Objective-C是否保证接口成员数据的初始化?,objective-c,Objective C,在这样的界面中: @interface MyClass : NSObject { bool PlainOldBool; } @end 。。。PlainOldBool是否自动初始化为false,或者是否需要使用init方法来显式执行此操作?Yes()。默认的+alloc/+allocWithZone:方法将自动清除所有IVAR 从 它将所有其他实例变量初始化为零(或零的等效类型,如nil、NULL、和0.0) 也值得注意的是,如果你正在做ObjultC++,ObjuleC对象的IV

在这样的界面中:

@interface MyClass : NSObject
{
    bool PlainOldBool;
}

@end
。。。
PlainOldBool
是否自动初始化为false,或者是否需要使用init方法来显式执行此操作?

Yes()。默认的
+alloc
/
+allocWithZone:
方法将自动清除所有IVAR

  • 它将所有其他实例变量初始化为零(或零的等效类型,如
    nil
    NULL
    、和
    0.0

也值得注意的是,如果你正在做ObjultC++,ObjuleC对象的IVAR的C++对象没有被初始化:它们的构造函数在默认情况下是不被调用的。那么你会怎么做,一堆新的()操作符?实际上我错了:默认情况下,构造函数是被调用的。有一个构建设置来控制这一点,它是objc调用cxx cdtors。如果保持选中状态,则将调用“默认”构造函数(例如,没有参数的构造函数)。有关gcc手册的更多详细信息:(或者您可以使用指针并手动调用new())您可能希望更新此页面上的+alloc方法链接: