ABRecordCopyCompositeName和CFBridgingRelease崩溃问题
我正在使用AddressBook开发IOS应用程序。ABRecordCopyCompositeName和CFBridgingRelease崩溃问题
这是我用的代码。
我碰到了substringWithRange函数的崩溃问题。
什么是崩溃原因?
谢谢。
NSString * sort_name = CFBridgingRelease(ABRecordCopyCompositeName(person));
if (sort_name != nil) {
[self Make_Sorting_Name:sort_name];
- (NSDictionary *)Make_Sorting_Name:(NSString *)sort_name {
NSString * sort_char = [[NSString stringWithString:[sort_name substringWithRange:NSMakeRange(0, 1)]] uppercaseString];
NSCharacterSet *nonDigits = [NSCharacterSet letterCharacterSet];
BOOL containsNonDigitChars = ([sort_char rangeOfCharacterFromSet:nonDigits].location == NSNotFound);
}
ABRecordCopyCompositeName
函数有时可能返回零或空字符串。所以这个案例需要检查:
NSString *sort_char = @""; //or another specific character for sorting
if (sort_name != nil && sort_name.length > 0){
sort_char = [[NSString stringWithString:[sort_name substringWithRange:NSMakeRange(0, 1)]] uppercaseString];
}
有没有问题,我用CFBridgingRelease? –
当ABRecordCopyCompositeName将返回空字符串? –
'CFBridgingRelease'将非Objective-C指针移动到Objective-C,并将所有权转移给ARC。所以没关系。 –
仅供参考 - 从iOS 9.0开始,您应该使用较新的Contacts框架,而不是弃用的AddressBook框架。 – rmaddy