您可以在Objective-C中使用标准点表示法或方法调用来访问Objective-C中对象的属性.
myObject.property = YES;
要么
[myObject setProperty:YES];
性能方面是否存在差异(访问财产方面)?在编码风格方面,这只是一个偏好问题吗?
Objective-C中属性访问的点表示法是一种消息发送,就像括号表示法一样.就是这样:
@interface Foo : NSObject @property BOOL bar; @end Foo *foo = [[Foo alloc] init]; foo.bar = YES; [foo setBar:YES];
最后两行编译完全相同.唯一改变这一点的是,如果属性指定了一个getter
和/或setter
属性; 但是,它所做的只是更改发送的消息,而不是是否发送消息:
@interface MyView : NSView @property(getter=isEmpty) BOOL empty; @end if ([someView isEmpty]) { /* ... */ } if (someView.empty) { /* ... */ }
最后两行的编译都是相同的.