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