我有两个相互代表的控制器,我正在使用 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,但我不知道如何阻止它。我究竟做错了什么?