07-01-2010, 02:29 AM
#1 (permalink )
Registered Member
Join Date: Jun 2010
Posts: 16
Memory leaks working with Address Book, but when I fix I get EXC_BAD_ACCESS signal?
Hi all
I'm wondering if there's anyone who can help? This is my original code which is within viewDidLoad:
CFArrayRef member = ABGroupCopyArrayOfAllMembers(groupID);
if (member) {
CFIndex memberCount = CFArrayGetCount(member);
for (int i = 0; i < memberCount; i++) {
ABRecordRef ref = CFArrayGetValueAtIndex(member, i);
NSString *name = [[NSString alloc] initWithFormat:@"%@", [self getName:ref]];
NSString *phone = [[NSString alloc] initWithFormat:@"%@", [self getPhone:ref]];
NSString *email = [[NSString alloc] initWithFormat:@"%@", [self getEmail:ref]];
[contactsArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys: name, kRecordName, ref, kRecordID, phone, kRecordPhone, email, kRecordEmail, nil]];
CFRelease(ref);
[name release];
[phone release];
[email release];
}
}
But when I ran the Leaks Instrument, it was leaking because I hadn't released CFArrayRef member. So I changed the code to:
CFArrayRef member = ABGroupCopyArrayOfAllMembers(groupID);
if (member) {
CFIndex memberCount = CFArrayGetCount(member);
for (int i = 0; i < memberCount; i++) {
ABRecordRef ref = CFArrayGetValueAtIndex(member, i);
NSString *name = [[NSString alloc] initWithFormat:@"%@", [self getName:ref]];
NSString *phone = [[NSString alloc] initWithFormat:@"%@", [self getPhone:ref]];
NSString *email = [[NSString alloc] initWithFormat:@"%@", [self getEmail:ref]];
[contactsArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys: name, kRecordName, ref, kRecordID, phone, kRecordPhone, email, kRecordEmail, nil]];
CFRelease(ref);
[name release];
[phone release];
[email release];
}
CFRelease(member);
}
This fixed my memory leak issue but for some reason the app started to give me EXC_BAD_ACCESS errors when navigating through the screens. Just wondering if anyone knows how to solve this problem?
Please help!
Noobdev
07-01-2010, 09:21 PM
#2 (permalink )
Registered Member
Join Date: Jun 2010
Posts: 16
Quote:
Originally Posted by
noobdev
Hi all
I'm wondering if there's anyone who can help? This is my original code which is within viewDidLoad:
CFArrayRef member = ABGroupCopyArrayOfAllMembers(groupID);
if (member) {
CFIndex memberCount = CFArrayGetCount(member);
for (int i = 0; i < memberCount; i++) {
ABRecordRef ref = CFArrayGetValueAtIndex(member, i);
NSString *name = [[NSString alloc] initWithFormat:@"%@", [self getName:ref]];
NSString *phone = [[NSString alloc] initWithFormat:@"%@", [self getPhone:ref]];
NSString *email = [[NSString alloc] initWithFormat:@"%@", [self getEmail:ref]];
[contactsArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys: name, kRecordName, ref, kRecordID, phone, kRecordPhone, email, kRecordEmail, nil]];
CFRelease(ref);
[name release];
[phone release];
[email release];
}
}
But when I ran the Leaks Instrument, it was leaking because I hadn't released CFArrayRef member. So I changed the code to:
CFArrayRef member = ABGroupCopyArrayOfAllMembers(groupID);
if (member) {
CFIndex memberCount = CFArrayGetCount(member);
for (int i = 0; i < memberCount; i++) {
ABRecordRef ref = CFArrayGetValueAtIndex(member, i);
NSString *name = [[NSString alloc] initWithFormat:@"%@", [self getName:ref]];
NSString *phone = [[NSString alloc] initWithFormat:@"%@", [self getPhone:ref]];
NSString *email = [[NSString alloc] initWithFormat:@"%@", [self getEmail:ref]];
[contactsArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys: name, kRecordName, ref, kRecordID, phone, kRecordPhone, email, kRecordEmail, nil]];
CFRelease(ref);
[name release];
[phone release];
[email release];
}
CFRelease(member);
}
This fixed my memory leak issue but for some reason the app started to give me EXC_BAD_ACCESS errors when navigating through the screens. Just wondering if anyone knows how to solve this problem?
Please help!
Noobdev
Don't worry I've fixed the issue by using NSArray instead of CFArrayRef
Thread Tools
Display Modes
Linear Mode
Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
» Advertisements
» Stats
Members: 175,657
Threads: 94,118
Posts: 402,892
Top Poster: BrianSlick (7,990)
Welcome to our newest member, jenniead38