属性默认为零吗?

发布于 2024-12-23 06:27:17 字数 539 浏览 1 评论 0原文

如果我不使用 ivar 作为属性,但这样做:

@interface someClass : NSObject

@property (nonatomic, retain) NSArray * someArray;

@end

@implementation someClass

@synthesize someArray = _someArray;

- (void) someMethod
{
    if( self.someArray == nil ){
        // True on the first call?
    }
}


@end

第一次检查 self.someArray 时,它返回 nil_someArray 也是如此>,但是这是有保证的吗?我只读到 ivars 保证为 nil,并且由于我没有声明 ivar(_someArray 不是 ivar),我不确定它是否会nil 无处不在、每时每刻。

If i don't use an ivar for properties, but do this:

@interface someClass : NSObject

@property (nonatomic, retain) NSArray * someArray;

@end

@implementation someClass

@synthesize someArray = _someArray;

- (void) someMethod
{
    if( self.someArray == nil ){
        // True on the first call?
    }
}


@end

The first time I check self.someArray it returns nil, as does _someArray, but is this guaranteed? I read only that ivars are guaranteed to be nil, and since I don't declare a ivar (_someArray is not an ivar), I am not sure if it will be nil everywhere and every time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月牙弯弯 2024-12-30 06:27:17

总是为零。 Objective-C 在分配类时将其所有变量初始化为 nil。合成的 ivars 遵循相同的规则。

It's always nil. Objective-C initialises all the variables in a class to nil when it is allocated. Synthesised ivars follow the same rules.

冧九 2024-12-30 06:27:17

如果属性是自动合成的,则由实例变量支持 - 所以是的,默认情况下此类属性将返回 nil。

Properties are backed by instance variables if they are synthesized automatically -- so yes, by default such properties will return nil.

眼角的笑意。 2024-12-30 06:27:17

是的,所有属性、ivars 和静态变量始终被定义为初始化为 nil。现在,有了 ARC,这就会转移到 __strong 堆栈变量(__strong 是所有对象指针的默认值)。

Yes, all properties, ivars and static variables have always been defined to be initialized to nil. Now with ARC this carries over to __strong stack variables (__strong being the default for all object pointers).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文