gpt4 book ai didi

ios5 - Objective-C 2.0 中的属性、 "Synthesize"和 "Dynamic"的说明

转载 作者:行者123 更新时间:2023-12-04 18:16:26 24 4
gpt4 key购买 nike

如果我在 Objective-C 2.0 中定义一个属性如下:

@property (readwrite, assign) NSObject *theObject;

我必须以某种方式创建 getter 和 setter 方法。据我所知,对此我有三个选择。
  • 手动编码 - (NSObject *)theObject 的实现& - (void)setTheObject:(NSObject *)object
  • 使用@synthesize自动生成这两种方法,或
  • 使用@dynamic自动生成我不选择覆盖的两种方法中的任何一种。

  • 我是否正确理解这一点?还有,不同的 @property怎么用?参数影响 @synthesize 的结果& @dynamic ? (例如, nonatomicweak )

    最佳答案

    您误解了 @synthesize 之间的区别和 @dynamic .
    @synthesize如果尚未手动实现 getter 和/或 setter,则将生成属性的 getter 和 setter 方法。这是你目前所相信的 @dynamic做。
    @dynamic当您不希望运行时自动生成 getter 和 setter 并且您没有手动实现它们时使用。基本上,@dynamic告诉编译器 getter/setter 将在运行时使用某种运行时魔法动态提供。

    例如,Objective-C Runtime Programming Guide说:

    You can implement the methods `resolveInstanceMethod:` and `resolveClassMethod:` 
    to dynamically provide an implementation for a given selector for an instance
    and class method respectively.

    我建议你阅读 Declared Properties The Objective-C Programming部分这种语言更详细地解释了 @property , @synthesize@dynamicnonatomic 等所有属性一起工作和 weak .

    关于ios5 - Objective-C 2.0 中的属性、 "Synthesize"和 "Dynamic"的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11571910/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com