我有一个具有瞬态attr Series
的核心数据实体indexCurrent
。当外部类访问indexCurrent
时,我希望它们发送一个arg,用于检查indexCurrent
的值是否需要在返回之前更新。因此,我已将indexCurrent
声明为私有变量,并且只允许通过具有arg的特殊方法对其进行外部访问。
但是虽然编译器发出“找不到方法”警告,但它允许外部类同时调用indexCurrent
和setindexCurrent:
,并且这个错误的代码执行完全成功。
以下是Series
界面:
@interface Series : NSManagedObject {
@private
NSNumber *indexCurrent;
}
indexCurrent
没有属性,在实现文件中未声明为动态,我还没有编写indexCurrent
或setindexCurrent:
个访问者。
我做错了什么?如何将indexCurrent
设为私有?
答案 0 :(得分:2)
@dynamic不会导致生成任何代码。无论您是否使用@dynamic,Core Data都会为属性访问器生成代码。 @dynamic只是通知编译器将生成代码,因此它不需要警告缺少方法。这就是您收到警告但没有运行时错误的原因。
实例变量上的@private并没有做太多。默认为@protected,这意味着外部类无论如何都无法访问它,只有类本身和子类。在任何情况下,默认的Core Data访问器都不使用实例变量。
我不确定如何做你想做的事。