gpt4 book ai didi

objective-c - 访问属性方法和类字段之间的区别(Objective-C)

转载 作者:太空狗 更新时间:2023-10-30 03:23:59 25 4
gpt4 key购买 nike

假设我有这段代码:

@interface Foo : NSObject {
Bar *bar;
}

@property (retain, nonatomic) Bar *bar;

@end

使用这个字段/属性时,行与行之间有什么区别吗:

[self.bar doStuff];

[bar doStuff];

?

在赋值的时候,属性方法会进行正确的保留,但是对属性的读访问呢,如上所述?有区别吗?

最佳答案

区别很大。[self.bar doStuff] 等同于[[self bar] doStuff]

[bar doStuff] 等同于[self->bar doStuff]

前者使用访问器方法,后者只是直接访问实例变量bar。

如果您在bar 属性上使用@synthesize 指令,编译器将为您生成两个方法:

- (void)setBar:(Bar*)b;
- (Bar*)bar;

另请注意,编译器生成的 setter 方法保留了您在 @property 声明中指定的 Bar 实例。

关于objective-c - 访问属性方法和类字段之间的区别(Objective-C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1082284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com