我编写了自己的类(NSObject的子类),并为它编写了自定义初始化程序。我遇到的问题是,当我启动我的应用程序,并调用refreshData实例方法时,一切正常。当我再次调用refreshData方法时,该对象被释放,我得到错误。初始化实例时,将分配内存,但不知何故,它将被释放。我错过了什么?
的UIViewController:
- (void)viewDidLoad {
[super viewDidLoad];
// Initialze an instance of our data controller class
dataController = [FCDataController initWithObject:self animated:NO];
[dataController refreshData];
}
NSObject的:
+ (FCDataController *)initWithObject:(id)object animated:(BOOL)animated {
FCDataController *dataController = [[FCDataController alloc] initWithObject:object animated:animated];
return dataController;
}
- (id)initWithObject:(id)object animated:(BOOL)animated {
self = [super init];
if (self) {
self.delegate = object;
self.animated = animated;
}
return self;
}
答案 0 :(得分:0)
viewDidLoad
只会在UIViewController
的子类上调用。这个类真的是UIViewController
的子类吗?
假设这是一个视图控制器,该类的实例已经创建并在调用viewDidLoad
时运行。 viewDidLoad
中的行将创建同一个类的第二个实例,将第一个实例指定为第二个实例的委托。这可能不是你想要的。
您可能只想在加载视图时刷新数据。
- (void)viewDidLoad {
[super viewDidLoad];
// Initialze an instance of our data controller class
[self refreshData];
}
为了进一步扩展它,您可能不需要刷新init
上的数据,因为您只是在视图加载时再次刷新它。