我需要从某些第三方框架中自定义现有类的一些方法和属性。我知道我可以扩展课程或创建一个类别。但是,如果我想保持框架的源代码未触及并且只创建我自己的添加/扩展,哪种方法更好?
在我的特定情况下,我想检索在.m文件中声明的类SomeClass:NSObject
的私有属性:
SomeClass.m
@interface SomeClass()
@property (nonatomic, strong) NSString *string;
//...
@end
@implementation SomeClass
//....
@end
答案 0 :(得分:0)
使用类别。类别适用于该类的所有子类,而不仅仅适用于您的一个子类。例如,假设您希望能够获得任意UIView的UIImage。如果您继承UIView,然后想要在UIScrollView上使用该方法,则无法在不为UIScrollView创建另一个子类的情况下使用该方法,并且您希望在层次结构中使用该方法的所有其他类。
不使用子类的另一个原因是,如果你的框架中有一个方法,它返回一个类的实例,如
+(classWithAPrivateProperty *)getClassWithPrivateProperty
在访问该属性之前,您必须使用该类中的数据创建子类的新成员。