假设我有这段代码:
@interface Foo : NSObject {
Bar *bar;
}
@property (retain, nonatomic) Bar *bar;
@end
Run Code Online (Sandbox Code Playgroud)
使用此字段/属性时,行之间是否有任何区别:
[self.bar doStuff];
Run Code Online (Sandbox Code Playgroud)
和
[bar doStuff];
Run Code Online (Sandbox Code Playgroud)
?
在进行赋值时,属性方法将执行正确的保留,但如上所述,对属性的读访问权如何呢?有什么区别吗?
nsc*_*idt 13
有一个很大的不同.
[self.bar doStuff]
相当于[[self bar] doStuff]
[bar doStuff]
相当于 [self->bar doStuff]
前者使用访问器方法,后者只是直接访问实例变量栏.
如果@synthesize
在bar
属性上使用该指令,编译器将为您生成两种方法:
- (void)setBar:(Bar*)b;
- (Bar*)bar;
Run Code Online (Sandbox Code Playgroud)
另请注意,编译器生成的setter方法保留了您Bar
在@property
声明中告诉它的实例.
归档时间: |
|
查看次数: |
6897 次 |
最近记录: |