-1

正如标题所解释的,如果我控制将 xib 文件中的组件拖向 .h 文件以方便地创建一个出口,比如doublePicker或其他东西,xcode 将帮助在viewDidUnloaded:这样的方法中创建语句:

[self setDoublePicker:nil];

那和有什么区别:

self.doublePicker = nil;

哪一个表现更好?

4

4 回答 4

2
Foo *foo = [[Foo alloc] init];
foo.bar = YES;
[foo setBar:YES];

最后两行将编译完全相同。唯一改变这一点的是属性是否指定了 getter 和/或 setter 属性;但是,它所做的只是更改发送的消息,而不是是否发送消息:

if ([someView isEmpty]) { /* ... */ }
if (someView.empty) { /* ... */ }

两条线都给出相同的结果。. 一次参考这个以更好地理解点符号

于 2013-03-21T09:26:56.520 回答
1

它们是等价的。使用 Objective-C 属性设置值foo = nil等同于调用setFoo:nil. 看:

于 2013-03-21T09:20:32.330 回答
1

在简单的第一个是调用名称的方法setDoublePicker
,第二个是你设置self.doublePickernil

有关更多信息,请阅读 self.var 和简单 var 之间的问题差异

并且还阅读了这个官方文档。

于 2013-03-21T09:32:34.627 回答
1

如果您没有对实例变量使用任何自定义 setter 或 getter 方法,则两者都是相同的。如果您使用任何自定义 setter 或 getter,那么您将收到以下代码的警告

[self setDoublePicker:nil ];
于 2013-03-21T09:33:22.107 回答