0

我需要从一些第三方框架中自定义现有类的一些方法和属性。我知道我可以扩展类或创建一个类别。但是,如果我想保持框架的来源不变并且只创建我自己的添加/扩展,哪种方法效果更好?

在我的特殊情况下,我想检索SomeClass:NSObject在 .m 文件中声明的类的私有属性:

SomeClass.m

@interface SomeClass() 
@property (nonatomic, strong) NSString *string;
//...
@end

@implementation SomeClass 
//....
@end 
4

1 回答 1

0

使用一个类别。一个类别将适用于该类的所有子类,而不仅仅是您的一个子类。例如,假设您希望能够获得任意 UIView 的 UIImage。如果您将 UIView 子类化,然后想在 UIScrollView 上使用该方法,那么您将无法使用该方法,除非您为 UIScrollView 创建另一个子类,并且要在层次结构中使用该方法的每个其他类。

不使用子类的另一个原因是,如果您的框架中有一个方法返回一个类的实例,例如

+(classWithAPrivateProperty*) getClassWithPrivateProperty

您必须先使用该类中的数据创建子类的新成员,然后才能访问该属性。

于 2013-10-11T20:06:25.943 回答