使用父类的成员前需先实现该父类

如果在一个类里实现了其父类的某个成员变量,则首先需要先实现该父类的对象,如:

@interface Option : OAuthViewController

...

@end


而OAuthViewController类的声明如下:

@interface OAuthViewController : UIViewController {

  OAuth *oAuth;

}

...

@end


该Option类继承了OAuthViewController类,然后在Option类的某个方法中实现了oAuth的实例。

然而,此时并没有对OAuthViewController初始化,因此程序也无法对oAuth初始化。此时对oAuth所做的一切操作都会导致程序异常

 

解决方法:在Option类里手动初始化OAuthViewController类。

通过调用OAuthViewController类的

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

方法,执行了初始化后程序运行一切正常。

PS:一开始我在Option类里添加了init方法,在该方法中初始化OAuthViewController,然而在Option本身的初始化过程中并不会执行init方法,因此此方法不可用。所以我将OAuthViewController的初始化放入Option的ViewDidLoad中。
原文地址:https://www.cnblogs.com/eagley/p/1740051.html