我使用NSString附加字符串,但是当我释放“cacheStr” NSString时,iphone模拟器崩溃了。
我应该将发布代码放在哪里?
初始化代码:我使用三个NSString追加dataArray的内容。
NSMutableArray *dataArray = [[NSMutableArray alloc] init];
NSString *cacheStr = [[NSString alloc] init];
NSString *tmpStr = [[NSString alloc] init];
NSString *notiyStr = [[NSString alloc] initWithFormat:@"This is a test message!"];
dataArray = [NSArray arrayWithObjects:
@"currency1.png",
@"currency2.png",
@"currency3.png",
@"currency4.png",
@"currency5.png",
@"xxxxxx",
@"currency1.png",
@"currency2.png",
@"currency3.png",
@"currency4.png",
@"currency5.png",
@"xxxxxx",
nil];
append string code : use for loop to append strings.
int isFailed = 0;
int countOfDataArray = [dataArray count];
if (!isFailed) {
for (int i=0; i < countOfDataArray; i++) {
if ([[dataArray objectAtIndex:i] isEqualToString:@"xxxxxx"]) {
tmpStr = [cacheStr stringByAppendingFormat:@"%@\n", [dataArray objectAtIndex:i]];
}
else {
tmpStr = [cacheStr stringByAppendingFormat:@"value %d : %@\n", i+1, [dataArray objectAtIndex:i]];
}
cacheStr = [tmpStr copy];
[tmpStr release];
}
}
tmpStr = [notiyStr stringByAppendingString:cacheStr];
发布代码:当我添加[cacheStr版本]时,模拟器将崩溃...
[dataArray release];
[notiyStr release];
// [cacheStr release]; /* crash ... */
谢谢!
最佳答案
这样声明NSString更简单NSString *tmpStr = @"This is a test message!";
那么当您不使用alloc时就无需释放它
关于iphone - 发行时NSString崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9941672/