【发布时间】:2017-08-16 11:24:28
【问题描述】:
我想在一个类别中创建一个属性,这样我就可以对访问器使用点表示法。我想这样做的原因是我可以重构一些引用 NSMangedObject 属性的现有代码。然后我会将类别访问器方法放在外部调用者和它们相关的 NSManagedObject 属性之间。 (我不想用消息代替当前的点符号用法,因为我在一个非常大的项目中使用点符号。)
我在类别界面中使用如下属性声明进行了一些实验:
@property NSString* details;
这会导致编译器警告(它不喜欢默认的分配属性。)
由于没有直接与属性绑定的ivar,所以添加retain或copy的属性是没有意义的。
接下来,我只是省略了@property 行,并在接口和实现文件中添加了访问器。
- (void) setDetails:(NSString*)details;
- (NSString*) details;
我编译并运行了代码。我使用点符号测试了这些方法。我可以看到访问器可以成功使用而不会出现错误并且编译器不会抱怨。
我读到的关于点表示法的内容告诉我,如果我以某种方式设置属性,我可以使用点表示法。但我没有设置符合该要求的属性。但看来我仍然可以使用点表示法。
这种方法有什么问题吗?是否有规范定义点符号访问器的使用方式和时间?
【问题讨论】:
标签: objective-c syntax properties categories