Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C如何处理具有相同属性名的子类和超类?_Objective C_Core Data_Ios8 - Fatal编程技术网

Objective-C如何处理具有相同属性名的子类和超类?

Objective-C如何处理具有相同属性名的子类和超类?,objective-c,core-data,ios8,Objective C,Core Data,Ios8,在iOS 8中,NSManagedObject被赋予了一个新属性: @property(非原子,getter=isDeleted,只读)BOOL已删除 不幸的是,我已经在NSManagedObject的子类中使用了同名属性来将对象标记为软删除 @属性(非原子,保留)NSNumber*已删除;//CoreData模型中的布尔值 这会导致大量编译器警告: 属性“deleted”上的“getter”属性与从“NSManagedObject”继承的属性不匹配。 Objective-C如何处理具有相同属性

在iOS 8中,NSManagedObject被赋予了一个新属性:

@property(非原子,getter=isDeleted,只读)BOOL已删除

不幸的是,我已经在
NSManagedObject
的子类中使用了同名属性来将对象标记为软删除

@属性(非原子,保留)NSNumber*已删除;//CoreData模型中的布尔值

这会导致大量编译器警告:

属性“deleted”上的“getter”属性与从“NSManagedObject”继承的属性不匹配。


Objective-C如何处理具有相同属性的超类和子类?很明显,我计划全面重命名这个属性,但是这个应用程序已经有多个版本了,我很好奇它的含义

@property
访问器只是常规方法,因此它们的处理方式与其他方法完全相同。在这种情况下,我相信您会幸运,因为框架(
NSManagedObject
)getter是
-isDeleted
,而不是
-deleted
。因为您的子类实现了
-deleted
,所以从技术上讲与getter没有冲突

现在,真正的问题是,如果
NSManagedObject
在内部实现了相应的
-setDeleted:
setter,那么将调用该方法的子类实现,而不是
NSManagedObject
的实现。使用
-instancessrespondtoselector:
快速检查似乎发现
NSManagedObject
实际上并没有实现
-setDeleted:
(无论如何,在OS X上)。所以,你可能没事

我不清楚这样的冲突对你的应用程序的实际影响(假设你不幸运,如上所述),也不知道你的应用程序到底在做什么或为什么。值得一提的是,NSManagedObject上的
-isDeleted
方法一点也不新鲜。它只是在iOS 8中升级为声明的
@属性
(大概是为了简化Swift互操作性)。删除自己的
属性可能一直都是个坏主意