设置addressBook实例变量的正确方法?

时间:2010-12-02 11:19:02

标签: iphone objective-c addressbook

也许有人可以轻松回答这个问题。我正在开发一个iphone应用程序,在哪里获取cellForRowAtIndexPath中每一行的信息我每次调用时都会创建一个新的地址簿:

ABAddressBookRef addressBook = ABAddressBookCreate();

这种方法很好,除了它很慢,并且感觉不适合为每一行创建一个新的ab。所以我创建了一个addressBook实例变量,但似乎无法使用它而不会崩溃。 (程序收到信号:“EXC_BAD_ACCESS”。) 我想我没有正确设置它,但是在文档中没有找到任何具体的相关内容。

向所有可以提供帮助的人提前感谢一百万。

在我的.h文件中,我这样做了:

ABAddressBookRef addressBook;


@property(nonatomic, readwrite) ABAddressBookRef addressBook;

然后在我的.m文件中:

-(id)initWithStyle:(UITableViewStyle)style
{
    if (self = [super initWithStyle:style]) {

        addressBook = ABAddressBookCreate();
    }

    return self;
}

1 个答案:

答案 0 :(得分:0)

您何时通过CFRelease(addressBook)发布地址簿?如果内存不足,ABAddressBookCreate()将返回一个nil对象。基于C的addressBook.framework API不能与nil对象一起使用,它会因“EXC_BAD_ACCESS”而崩溃。