【发布时间】:2011-11-14 08:12:04
【问题描述】:
如果我在将第一个数组复制到第二个数组后释放它,我的应用程序就会崩溃。如果我自动释放第一个数组,一切正常。为什么?有没有更好的方法将第一个数组复制到第二个数组?
如果我调用这个方法,我会得到一个 ECX_BAD_ACCESS,我传递的是一个空数组
-(NSArray *)loadSystemDetails
{
AssortedCodeSnippets *acs = [[AssortedCodeSnippets alloc] init];
NSArray *details;
NSString *fp = [self tempPathAndFileName:[self systemDetailsFileName]];
if ([acs fileExistsAtPath:fp]) {
NSArray *array = [[NSArray alloc] initWithContentsOfFile:fp];
details = array;
[array release];
} else {
NSLog(@"No File to Load");
CreateSystem *cls = [[CreateSystem alloc] init];
details = [cls loadData];
[cls release];
[self saveDataFile:details toPath:fp];
}
NSLog(@"details: %@",details);
[acs release];
return details;
}
如果我自动释放数组,它工作正常。
-(NSArray *)loadSystemDetails
{
AssortedCodeSnippets *acs = [[AssortedCodeSnippets alloc] init];
NSArray *details;
NSString *fp = [self tempPathAndFileName:[self systemDetailsFileName]];
if ([acs fileExistsAtPath:fp]) {
NSArray *array = [[[NSArray alloc] initWithContentsOfFile:fp]autorelease];
details = array;
} else {
NSLog(@"No File to Load");
CreateSystem *cls = [[CreateSystem alloc] init];
details = [cls loadData];
[cls release];
[self saveDataFile:details toPath:fp];
}
【问题讨论】:
-
坦率地说,在您了解指针是什么之前,您应该坚持使用普通的旧 C 语言,甚至 Java。 Objective-C 对于初学者来说太复杂了。
-
嘿,放轻松,每个人都必须从某个地方开始,我可以将我的 C 知识写在邮票的背面,但我的开发似乎还不错:S
标签: objective-c ios nsarray