也许有人可以轻松回答这个问题。我正在开发一个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;
}
答案 0 :(得分:0)
您何时通过CFRelease(addressBook)发布地址簿?如果内存不足,ABAddressBookCreate()将返回一个nil对象。基于C的addressBook.framework API不能与nil对象一起使用,它会因“EXC_BAD_ACCESS”而崩溃。