Difference between setting a property directly and using its setter?

前端 未结 3 1303
轮回少年
轮回少年 2020-12-22 02:19

What is the difference between these two?

  • self.view.color = [UIColor redColor];
  • [self.view setColor:[UIColor redColor]];
3条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-22 02:40

    Nothing.

    • With self.view.color = ... the property's setter in called implicitly.
    • With [self.view setColor:...] you call the setter explicitly.

    More in detail: UIView has a color property something like:

    @property (nonatomic, strong) UIColor* color;
    

    In Objective-C this automatically defines an underlying ivar _color, and generates code for the setter and getter. (What code is generated depends on the modifiers nonatomic, ... you specify.)

    When you type self.view.color = ... the compiler sees that your color is a property, and internally replaces it with [self.view setColor:...].

提交回复
热议问题