同名的类别会发生什么?

时间:2013-06-19 01:54:18

标签: objective-c

说A是B的子类

说A有一个类别doThis。

B也有一个类别doThis。

说我做了

B* b = [[B alloc]init];
[b doThis];

是否保证在B + doThis.h中声明的doThis将被称为而不是A + doThis?

样品:

在NSManagedObject + somecategories.m

+(void)vLoadBookmark
{
   //Just empty
}

后期

在BusinessObject + somecategories.m中,其中BusinessObject是NSManagedObject的子类

+(void)vLoadBookmark
{
   //Do something

}

如果有一天我打电话给[someBusinessObject vLoadBookmark] //会做什么事吗?

1 个答案:

答案 0 :(得分:5)

如果某个类别覆盖了另一个类别中定义的方法,则未定义哪个实现将占优势。

Apple的Objective-C编程> Avoid Category Method Name Clashes

  

如果类别中声明的方法的名称与方法相同   在原始类中,或在另一个类别中的方法相同   class(甚至是超类),行为未定义为哪个   方法实现在运行时使用。

相关问题