Difference between setting a property directly and using its setter?

前端 未结 3 1287
轮回少年
轮回少年 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:...].

    0 讨论(0)
  • 2020-12-22 02:52

    Mainly it is a syntax issue, both call the same setter so you can use both equally depending which one you personally prefer :)

    0 讨论(0)
  • 2020-12-22 02:54

    None, however that would be setColor:, not setcolor:

    [self.view setColor:[uicolor redColor]];
    
    0 讨论(0)
提交回复
热议问题