【发布时间】:2012-03-23 07:28:33
【问题描述】:
我有一个 UIViewController 的超类 - MasterViewController,它声明了一个名为 itemsViewController 的属性。这声明了一个从 MasterViewController 调用的方法,并通过 IB 中的故事板连接起来。
我有一个 MasterViewController 的子类,它将此属性重新声明为特定的 iPad 版本,但我无法从父类访问重新声明的属性。
MasterViewController
@interface MasterViewController : UIViewController {
}
@property (nonatomic, strong) IBOutlet ItemsViewController *itemsViewController;
@end
@implementation MasterViewController
@synthesize itemsViewController;
-(void)viewDidLoad {
// I can access itemsViewController in viewDidLoad.
}
@end
MasterViewController_iPad
@interface MasterViewController_iPad : MasterViewController {
IBOutlet ItemsViewController_iPad *_itemsViewController;
}
@property (nonatomic, strong) IBOutlet ItemsViewController_iPad *itemsViewController;
@end
@implementation MasterViewController_iPad
@synthesize itemsViewController = _itemsViewController;
-(void)viewDidLoad {
[super viewDidLoad];
// when I call super viewDidLoad, itemsViewController is nil, as though the property hasn't been overriden
// _itemsViewController is not nil in viewDidLoad.
}
@end
我是否误解了 Objective-C 中属性继承的工作方式?
【问题讨论】:
标签: iphone objective-c ios inheritance properties