不管为什么会发生这种情况我有一个方法getOutage,它返回一个托管对象数组
NSArray *fetchedOutages = [context executeFetchRequest:fetchRequest error:&error];
if (error) {
NSLog(@"Error in Core Data: %@", [error description]);
}
return fetchedOutages;
当我尝试将此数组复制到listOutage(这是一个属性)
时@property (nonatomic, retain) NSArray *listOutage
我试图在didRowSelectMethod中像这样复制这个数组
if (listOutage) {
NSLog(@"Its there");
[listOutage release];
}
listOutage=[[NSArray alloc] initWithArray:[self getOutage]];
我尝试了其他各种方法,但所有方法都失败了。
这个getoutage方法返回5个对象,在listOutage中复制了五个对象但是当我尝试访问listOutage元素时,它们显示为“超出范围” 请帮助我克服这个问题,我必须将它传递给下一个ViewController。
提前致谢
答案 0 :(得分:1)
当有属性时,使用'self.property'代替'property',当有人读你的代码时,如果你指的是ivar或属性,那就更明显了。
如果您使用self.property,则无需编写
if (listOutage) {
NSLog(@"Its there");
[listOutage release];
}
listOutage=[[NSArray alloc] initWithArray:[self getOutage]];
相反,只需写
NSArray newListOutage=[[NSArray alloc] initWithArray:[self getOutage]];
self.listOutage = newListOutage;
[newListOutage release];
发布和保留将由@synthesize属性生成的get / set方法处理。