1

当我在 Objective-C 中声明一个属性时,我还添加了 synthesize 子句来获取访问器

 @interface StoreManager ()
 @property (nonatomic, copy) NSString *writeStoresTimer;

 @implementation StoreManager
 @synthesize writeStoresTimer

我通常使用以下语法为属性设置值

 [self setWriteStoresManager:@"Data"];

上述语句是否与 self.writeStoresTimer = @"Data" 相同?这是否也会调用 set-accessor

4

3 回答 3

2

上面的语句和self.writeStoresTimer = @"Data"一样吗?

是的,完全一样。

实际上,如果您想覆盖自动合成的默认 setter 方法,您可以定义:

- (void)setWriteStoresTimer:(NSString *)string;

然后您的自定义实现将通过点语法调用。

来自苹果参考

您可以将属性声明视为等同于声明两个访问器方法。因此

   @property float value;

相当于:

   - (float)value;
   - (void)setValue:(float)newValue;
于 2012-06-28T15:46:38.513 回答
2

是的。他们都做同样的事情。

来自 Apple 的文档:

Objective-C 提供了一个点 (.) 运算符,它提供了方括号表示法 ([]) 的替代方法来调用访问器方法。点语法使用与访问 C 结构元素相同的模式:

您可以在The Objective C Programming Language中查看完整的文档

于 2012-06-28T15:50:38.043 回答
0

是的自己。并且 set 仅在您不在同一个类中并且仅使用指针名称时才使用访问器

于 2012-06-28T15:46:54.363 回答