0

我已经编写了自己的类(NSObject 的子类),并且还为它编写了一个自定义初始化程序。我遇到的问题是,当我启动应用程序并调用 refreshData 实例方法时,一切正常。然后当我第二次调用 refreshData 方法时,对象被释放并且我得到了错误。当实例初始化时,内存被分配但不知何故被释放。我错过了什么?

UIViewController:

- (void)viewDidLoad {

    [super viewDidLoad];

    // Initialze an instance of our data controller class
    dataController = [FCDataController initWithObject:self animated:NO];
    [dataController refreshData];
}

NS对象:

+ (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;
}
4

1 回答 1

0

viewDidLoad只会在UIViewController. 这个类真的是 a 的子类UIViewController吗?

假设这是一个视图控制器,该类的实例将已经创建并在viewDidLoad调用时运行。您在里面viewDidLoad的行将创建同一类的第二个实例,将第一个实例分配为第二个实例的委托。这可能不是你想要的。

您可能只想在加载视图时刷新数据。

- (void)viewDidLoad {
    [super viewDidLoad];

    // Initialze an instance of our data controller class
    [self refreshData];
}

为了进一步扩展它,您可能不需要刷新数据,init因为您只是在视图加载时再次刷新它。

于 2013-02-19T19:23:04.290 回答