直接设置属性和使用其setter之间的区别?

时间:2014-01-03 10:49:38

标签: objective-c

这两者有什么区别?

  • self.view.color = [UIColor redColor];
  • [self.view setColor:[UIColor redColor]];

3 个答案:

答案 0 :(得分:3)

没有

  • self.view.color = ...隐式调用属性的setter。
  • 使用[self.view setColor:...],您可以明确调用setter。

更详细:UIView的{​​{1}}属性类似于:

color

在Objective-C中,它自动定义底层的ivar @property (nonatomic, strong) UIColor* color; ,并为setter和getter生成代码。 (生成的代码取决于您指定的修饰符_color,...)

当您键入nonatomic时,编译器会发现您的self.view.color = ...是属性,并在内部将其替换为color

答案 1 :(得分:0)

无,但不是setColor:,而是setcolor:

[self.view setColor:[uicolor redColor]];

答案 2 :(得分:0)

主要是一个语法问题,它们都调用相同的setter,因此你可以根据个人喜好使用它们同等地使用它们。)