设置协议和加载生命周期

时间:2012-03-27 08:29:39

标签: objective-c uiviewcontroller

我在一些UIViewControllers上使用了一组协议。有没有办法在设置协议时设置在所有这些代码上运行的默认代码。还有一种方法让它们像UIViewController生命周期一样工作,例如当UIViewController加载它时呢?

 - (void)viewWillLoad;
 - (void(viewDidLoad;
 - (void)viewWillAppear:(BOOL)animated;
 - (void)viewDidAppear:(BOOL)anmated;

1 个答案:

答案 0 :(得分:1)

要在设置属性时运行代码(我假设这是你的意思吗?),你可以覆盖合成的setter方法

@synthesize value = _value;

- (void)setMyProperty:(id <MyProtocol>)value {
    if (value != value) {
        _value = value;

        // Insert your code here
        ...
    }
}

如果您希望所有视图控制器的行为方式相同,则可以提供UIViewController的公共子类,即

@interface AbstractViewController : UIViewController {
...
}

然后,所有'真正'的视图控制器都将继承,而不是直接来自UIViewController:

@interface MainViewController : AbstractViewController { ... }

@interface DetailsViewController : AbstractViewController { ... }

如果您将属性(以及重写的setter方法)添加到抽象视图控制器,那么所有真实视图控制器都将免费获得该功能。

我希望这有帮助。如果不是,请在您的问题中添加更多信息,我们可以再试一次:)