使用ARC时控制器之间丢失模型

时间:2013-08-08 18:34:22

标签: cocoa delegates automatic-ref-counting

我有两个控制器是彼此的代表,我正在使用ARC。第一个控制器从数据库中检索模型对象的NSMutableArray,然后保存它们以供其他对象使用。我已经测试过以确保它正确地检索对象。

第二个控制器应该从第一个控制器获取模型阵列以进行进一步处理,但是模型经常在此期间消失。我在第一个控制器中设置了它:

@interface FirstController : NSObject {
    NSMutableArray *modelArray;
@end

@property (nonatomic, copy) NSMutableArray *modelArray; //I also tried (strong).


@implementation
- (void)awakeFromNib {
    modelArray = [[NSMutableArray alloc]initWithCapacity:1];
    [modelArray addObjectsFromArray:[delegate MySQLQuery:@"SELECT * FROM reports" forModelObjects:@"Report"]]; //Delegate here refers to a third controller
    NSLog(@"FirstController: %ld", [modelArray count]); //Everything OK here
}

@synthesize modelArray;

但是当我在第二个控制器中调用它时:

    NSMutableArray *newArray = [[NSMutableArray alloc]initWithCapacity:1];
    newArray = [delegate modelArray]; // Delegate here refers to FirstController
    NSLog(@"SecondController: %@", newArray); 

大部分时间输出如下(虽然偶尔有效):

FirstController: 28
SecondController: (null)

在我看来,ARC正在FirstController中取消分配modelArray,但我不知道如何阻止它。我做错了什么?

0 个答案:

没有答案