这是一些我一直遇到问题的代码片段。我有一个适用于99%的用户的iPhone应用程序,但可能只有1%的用户有这个bug,我不能解决或在我这一端重现。这个应用程序只是为他们冻结,并没有真正崩溃(所以没有崩溃报告)。一些特别的分发测试已经揭示了这段代码中存在的问题。如果任何人有任何想法的问题可能是,请让我知道。谢谢。
NSString *addChar = nil;
NSString *fullname = (NSString *)ABRecordCopyCompositeName(record);
addChar = [[NSString stringWithString: [[fullname substringToIndex:1] capitalizedString]] retain];
[fname release];
NSMutableArray *array = [app_contacts objectForKey:addChar]; // lookup if key exists
if (array == nil) // if nothing in key, create new array
{
NSLog(@"array empty");
NSMutableArray *newarray = [[NSMutableArray alloc] init];
[newarray insertObject:one_person atIndex:0];
[app_contacts setValue:newarray forKey:addChar];
[newarray release];
}
else
{
NSLog(@"array not empty");
[array addObject:one_person];
[app_contacts setValue:array forKey:addChar];
}
[addChar release];发布于 2009-12-01 17:29:06
在此代码中:
NSString *fullname = (NSString *)ABRecordCopyCompositeName(record);
addChar = [[NSString stringWithString: [[fullname substringToIndex:1] capitalizedString]] retain];如果fullname等于@"",则在调用fullname substringToIndex:1时会引发异常。
发布于 2009-12-01 14:09:18
你为什么要这么做?
addChar = [[NSString stringWithString: [[fullname substringToIndex:1] capitalizedString]] retain];你已经得到了一个字符串:
addChar = [[fullname substringToIndex:1] capitalizedString];也消除了对[addChar release]的需求。
https://stackoverflow.com/questions/1824277
复制相似问题