【问题标题】:Does ABPersonViewController CFRetain its displayedPerson ABRecordRef?ABPersonViewController CF 是否保留其 displayPerson ABRecordRef?
【发布时间】:2010-01-25 14:46:13
【问题描述】:
ABRecordRef addressBookRecord = ...;
ABNewPersonViewController *newPersonViewController = [[[ABNewPersonViewController alloc] init] autorelease];
newPersonViewController.newPersonViewDelegate = delegate;
newPersonViewController.displayedPerson = addressBookRecord;

安全吗

CFRelease(addressBookRecord);

?

是否有我不知道的标准 CoreFoundation 模式?

【问题讨论】:

    标签: iphone cocoa-touch addressbook core-foundation


    【解决方案1】:

    我认为调用 CFRelease 并不安全。
    displayPerson 在标题中定义如下。
    因此,displayedPerson 只是在我们设置值时被分配而不是复制或保留。
    因此,我认为我们不能发布它。

    @property(nonatomic, readwrite) ABRecordRef displayedPerson
    

    【讨论】:

    • ABRecordRef 是一个结构体,所以我认为我们不能根据这个属性推断内存所有权。
    • 根据 iPhone OS Reference,ABRecordRef 只是“const void *”。所以,我认为它就像一个原始类型,比如 int。我猜 ABNewPersonViewController 只是在其中保留了一个指针。所以,如果你提前发布,这可能是个问题。
    猜你喜欢
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2012-04-23
    • 2013-04-15
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多