【发布时间】:2013-10-05 10:27:26
【问题描述】:
鉴于某些属性和方法在我的所有视图中都是稳定的,因此我在整个应用程序类中有很多重复的代码。
我希望扩展我正在使用的任何类,以便它自动 inherit all properties and methods 我认为这些类应该是通用的。
我查看了关于扩展类的apple guide。但我对我能达到的遗传水平感到困惑。
我已经成功地创建了Categories,比如说UIViewController。但这限制了我只能声明Methods。我不能在我的Category 上声明Properties 并在我的Category 或扩展类中调用它们。我希望能够声明 Properties 并在我的扩展类内部和外部使用它。
这是我第一次尝试在 Objective-C 中扩展一个类,充分利用继承,但我不知道这是否可能。我错过了什么吗?
作为下面代码中的示例,每次我尝试在我的方法 _activityIndicator 中实例化 activityIndicatorView 时,它都无法识别它。我试过@syntetize 和@dynamic 但它不起作用
注意:我正在根据如何实现方法和属性的继承来寻求答案。没有强调哪些类别不能做(因为我已经尝试过并且知道我不能在那里拥有属性)
我的尝试达到了
#import <UIKit/UIKit.h>
@interface UIViewController (customViewController1)
@property (strong, nonatomic) UIView *activityIndicatorView;
- (void) _activityIndicator;
@end
#import "UIViewController+customViewController1.h"
@implementation UIViewController (customViewController1)
- (void) _activityIndicator {
//......
}
【问题讨论】:
-
类扩展和继承是两双不同的鞋子。使用扩展,您可以扩展现有类但不创建新的子类。扩展(类别)适用于其他方法,而不适用于属性。如果你需要用 poperties 来扩展它,那就有点棘手了。
-
你为什么不只是 inehrit?加上所有类的常规继承可以实现(符合)相同的协议。协议类似于 Java 中的接口。使用协议,你也可以只添加方法而不是属性(afaik),但你当然可以添加你需要的 getter 和 setter。
标签: objective-c cocoa-touch cocoa