说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]
//会做什么事吗?
答案 0 :(得分:5)
如果某个类别覆盖了另一个类别中定义的方法,则未定义哪个实现将占优势。
Apple的Objective-C编程> Avoid Category Method Name Clashes:
如果类别中声明的方法的名称与方法相同 在原始类中,或在另一个类别中的方法相同 class(甚至是超类),行为未定义为哪个 方法实现在运行时使用。