- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这是我的代码,运行最后一行CFRelease(addressBook)
,程序崩溃!帮帮我~!
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
NSMutableArray *groups = [NSMutableArray arrayWithCapacity:ABAddressBookGetGroupCount(addressBook)];
NSMutableArray *people = [NSMutableArray arrayWithCapacity:ABAddressBookGetGroupCount(addressBook)];
[(NSArray *)CFBridgingRelease(ABAddressBookCopyArrayOfAllGroups(addressBook)) enumerateObjectsUsingBlock:^(id obj_g, NSUInteger idx, BOOL *stop) {
ABRecordRef g = (__bridge ABRecordRef)obj_g;
NSString *gname = CFBridgingRelease(ABRecordCopyCompositeName(g));
NSMutableArray *gp = [[[NSArray alloc] init] mutableCopy];
[(NSArray *)CFBridgingRelease(ABGroupCopyArrayOfAllMembers(g)) enumerateObjectsUsingBlock:^(id obj_p, NSUInteger idx, BOOL *stop) {
ABRecordRef p = (__bridge ABRecordRef)obj_p;
ABMultiValueRef numbers = ABRecordCopyValue(p, kABPersonPhoneProperty);
NSString *pname = CFBridgingRelease(ABRecordCopyCompositeName(p));
[(NSArray *) CFBridgingRelease(ABMultiValueCopyArrayOfAllValues(numbers)) enumerateObjectsUsingBlock:^(id obj_n, NSUInteger idx, BOOL *stop) {
NSString *pnumber = CFBridgingRelease(CFBridgingRetain(obj_n));
MasMsContact *new_c = [[MasMsContact alloc] init];
new_c.name = pname;
new_c.number = pnumber;
new_c.group = gname;
[gp addObject:new_c];
}];
CFRelease(numbers);
CFRelease(p);
}];
CFRelease(g);
[people addObject:[gp copy]];
[groups addObject:gname];
}];
#warning crash when release addressBook, why ???
if (addressBook) CFRelease(addressBook);
最佳答案
您不拥有 obj_p
或 obj_g
,因此当您释放它们的桥接引用然后从该枚举 block 中弹出时,它们会被过度释放。只有使用 Create
或 Copy
访问它们时,您才拥有核心基础对象。
关于ios - 调用 CFRelease(ABAddressBookRef ref) 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14035489/
以下代码导致我的 C++ 应用程序崩溃: CFMutableDictionaryRef property_dictionary = CFDictionaryCreateMutable( kCFAllo
这让我大吃一惊。我从 iPod 库中读取音频以分析音频样本,我可以做我想做的事,缓冲区总是泄漏,我收到低内存警告并且应用程序被终止。我尝试了所有建议但没有成功。下面的代码被合并到一个静态库中并且读取音
我正在学习 iOS 编程。 我编写了关联地址的代码。 有很多方法。喜欢 我正在划分一个小组。 这是组1 ABAddressBookCreate(); ABRecordCopyCompositeName
我有一个代码行,我在下面提到的行中一直崩溃。 ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, error
这个问题在这里已经有了答案: When do I use CFRelease? (2 个答案) 关闭 9 年前。
我有清除设备中地址簿的方法。方法如下。 -(void) clearAdressBook { ABAddressBookRef addrBook=ABAddressBookCreate();
我们的一位测试人员报告了以下崩溃: 0 APP_NAME_WAS_HERE 0x00074892 testflight_backtrace + 158 1 APP_NAME_WAS_HERE 0x00
以下是来自 Omni frameworks 的代码片段: CGMutablePathRef path = CGPathCreateMutable(); CGPathAddRect(path, NULL
我以两种方式拦截 CGEventRef: 返回值 NULL 以终止事件 通过 CGEventCreateKeyboardEvent() 为事件分配一个新的 CGEventRef Xcode 的分析器告
我的代码有一个非常奇怪的错误。事实上,根本没有错误,只是调试器以“程序收到信号:“EXC_BAD_ACCESS””消息开始。谁能帮我?我非常困惑...谢谢。 -(NSString *)fullName
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在尝试合并四张图片以使其成为一张 uiimage。但是当我要执行 CFRelease 时,它崩溃了。如果我不这样做,就会导致内存泄漏和崩溃。如何解决? 请参阅下面的代码。 refere
ABAddressBook 发生了一件奇怪的事情。这是一些代码: - (NSArray*)addressBookArray { ABAddressBookRef addressBook = N
我正在处理我的一个处于维护阶段的项目,所以我没有太多的自由来一次更改一个主要 block ,在处理这个时,我在模拟器和设备上都看到了这个随机崩溃而应用程序与服务器同步。流动性登录->上传本地数据到服务
CMSampleBufferRef sampleBuffer = [assetOutput copyNextSampleBuffer]; CMBlockBufferRef buffer = CMSam
我有点困惑。我读过的所有地方都建议在使用 ARC 时,你仍然需要释放核心基础对象,这是有道理的,ARC 不管理它们。但是,我有一个方法使用了一些 CF 方法/对象,我在这些方法/对象上使用了 CFRe
这是我的代码,运行最后一行CFRelease(addressBook),程序崩溃!帮帮我~! ABAddressBookRef addressBook = ABAddressBookCreateWit
我有以下方法: + (NSString*) getMD5HashFromFile:(NSString*)filePath { CFStringRef md5hash = FileMD5Hash
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)i
我刚刚全身心投入到 iOS 开发中,目前在 queryServer 函数末尾的 CFRelease 函数中出现运行时错误(我在突出显示的行上添加了注释)但我没有如果我注释掉对 extractIPFro
我是一名优秀的程序员,十分优秀!