2014-02-26 41 views
0

比方說,例如,我要放置在viewDidAppear:方法的一些代碼對所有UIViewController(包括子類)對象從我的項目:的Objective-C/IOS跟蹤屏幕使用

-(void)viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 

    NSLog(@"Did show: %@:%@", NSStringFromClass([self class]), self.title); 
} 

是否有不使用類別(UIViewController)而不必手動將所有視圖控制器的超類更改爲定義此方法的新類的方法?
我不想使用類別的原因是我可能想要定義方法並調用它們的超級實現。

例如,是否有可能在運行時(或使用預處理器宏)自動添加UIViewController與其他任何類從UIViewController繼承的中間類?

回答

2

實現此目的的常見方法稱爲方法調整。 Mike Ash has an article如何正確執行此操作。

總體思路是交換Objective-C方法的原始實現。通常你可以通過插入的函數/方法調用原始實現。

下面是引自Mike的文章:

強制性警告

你沒有自己的類重寫方法是一個危險的事情。通過打破有關課程的假設,你的推翻可能會導致問題。儘可能避免它。如果您必須這樣做,請謹慎編寫您的覆寫。

相關問題