【问题标题】:When to synthesize objective [duplicate]何时合成目标[重复]
【发布时间】:2014-10-04 19:52:25
【问题描述】:

我很难理解应该合成哪些对象。例如:

@interface DoSomething : UIView

@property (strong, nonatomic) UIColor *frameColor;
@property BOOL toggleScrollability;
- (void) changeBackgroundColorOfView;

@end

.m文件中,这三项应该综合哪一项?如果我尝试将它们全部合成,有什么缺点吗?一般来说,您应该合成哪些对象的经验法则是什么?

【问题讨论】:

标签: objective-c


【解决方案1】:

前两个是属性;第三个是实例方法。 @synthesize 仅适用于属性。

但是,如果您正在为 iOS 6 或更高版本构建,则根本不需要合成。在过去的几年里,编译器已经自动处理了这个问题。

【讨论】:

  • 所以自动编译器将其视为@synthesize frameColor = _frameColor ?
  • "你根本不需要合成" ...注意,仍然存在必须@synthesize的情况。请参阅stackoverflow.com/questions/19784454/… 的公认答案,以清楚地说明这些情况。但你说得对,在绝大多数情况下,我们不再手动合成。
【解决方案2】:

你只能合成属性,所以你不能写@synthesize changeBackgroundColorOfView

我认为从 XCode 4 开始,您就不必再使用 @synthesize 了。编译器会在需要时自动添加它,您可以通过在属性名称前添加 _ 来访问它。

在您的示例中,如果您在 DoSomething 类中,您将以 _frameColor 访问 frameColor 属性,否则以 doSomethingInstance.frameColor 访问。

但是,如果您想将属性重命名为内部内容,您可以随时自行添加。

Apple's reference

【讨论】:

    猜你喜欢
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2017-10-13
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    相关资源
    最近更新 更多