- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很难把我的CFRelease()
放在哪里在下面的代码中调用。要么我把我的CFRelease()
在一个括号内它会提示在另一个括号内缺失。
ABMutableMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
if (phones == nil || ABMultiValueGetCount(phones) == 0) {
CFArrayRef linkedContacts = ABPersonCopyArrayOfAllLinkedPeople(person);
phones = ABMultiValueCreateMutable(kABPersonPhoneProperty);
for (int i = 0; i < CFArrayGetCount(linkedContacts); i++) {
ABRecordRef linkedContact = CFArrayGetValueAtIndex(linkedContacts, i);
ABMultiValueRef linkedPhones = ABRecordCopyValue(linkedContact, kABPersonPhoneProperty);
if (linkedPhones != nil && ABMultiValueGetCount(linkedPhones) > 0) {
for (int j = 0; j < ABMultiValueGetCount(linkedPhones); j++) {
ABMultiValueAddValueAndLabel(phones, ABMultiValueCopyValueAtIndex(linkedPhones, j), NULL, NULL);
}
}
}
if (ABMultiValueGetCount(phones) == 0) {
return NO;
}
}
最佳答案
正如您可能知道的,您必须释放您“拥有”的所有对象,即所有对象从名称中包含“Create”或“Copy”的函数返回,但仅如果调用成功了。如果函数返回 NULL
,则不得对返回值调用 CFRelease
。
例如,在您的代码中
ABMultiValueRef linkedPhones = ABRecordCopyValue(linkedContact, kABPersonPhoneProperty);
if (linkedPhones != nil && ABMultiValueGetCount(linkedPhones) > 0) {
// ...
}
尚不清楚是否在 if block 末尾调用 CFRelease(linkedPhones)
。最好单独检查调用是否成功。
所以你的代码的这一部分看起来像:
ABMultiValueRef linkedPhones = ABRecordCopyValue(linkedContact, kABPersonPhoneProperty);
if (linkedPhones != nil) {
for (int j = 0; j < ABMultiValueGetCount(linkedPhones); j++) {
CFTypeRef value = ABMultiValueCopyValueAtIndex(linkedPhones, j);
if (value != nil) {
ABMultiValueAddValueAndLabel(phones, value, NULL, NULL);
CFRelease(value);
}
}
CFRelease(linkedPhones);
}
我希望这能让您开始重写完整的分析器安全函数!
关于objective-c - 很难在哪里放置 CFRelease 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118692/
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve th
我有一个带有输入字段的表单,使用javascript,当用户输入超过2个字符时,它会在第一个输入字段下方创建相同的输入字段。其代码是: Optie 1: 1 && treated[this.na
这是我的: char userInput; int position; vector userVector(7); vector someVector(7,1); cin >> userInput;
尝试使用 typescript 和 redux 构建一个简单的 react crud 应用程序并遇到以下问题。我有一个具有指定签名的函数,它将一个人对象作为参数,如此处所示。 export defau
哦,我多么希望 TCP 像 UDP 一样基于数据包! [查看评论] 但是,唉,事实并非如此,所以我正在尝试实现我自己的数据包层。这是到目前为止的事件链(忽略写入数据包) 哦,我的数据包结构非常简单:两
我想在我的页面底部放置一个包含不同数量图片的栏,这些图片(如果比页面宽)可以左右滚动。 页面宽度在变化,我希望 Pane 的宽度为 100%。 我试图通过让中间的 div 溢出并使用 jquery.a
我曾尝试在工作时将我的 Rails 应用程序 bundle 到我的 Mac 上。在家里它运行良好,我之前已经设法自己解决了它,但这次无论我尝试什么似乎都无法解决它。 我在运行 bundle/bundl
所以我有一个旧的网络表单站点,并且正在努力使其更易于维护。把它扔掉并重写它不是一种选择。 IoC 显然是它首先得到的东西之一,但这给我留下了服务定位器模式和糟糕的品味,并且想知道它是否可以做得更好。
我是一名优秀的程序员,十分优秀!