【发布时间】:2011-02-13 03:03:45
【问题描述】:
我正在使用下面的代码来设置我的两个NSArray ivars:
问题是,我在以下几行中不断出现内存泄漏:
followingFriendsArray = [[NSArray alloc] initWithArray:friend.Following];
followerFriendsArray = [[NSArray alloc] initWithArray:friend.Followers];
这不是从现有NSArray 项目设置 ivars 的正确方法吗?任何帮助,将不胜感激。我也试过autorelease上面两行,但是当我用另一种方法实际访问它们时,我得到一个错误,它们已经被释放了。
我在下面包含了我的接口和实现代码:
接口.h:
NSArray *followingFriendsArray;
NSArray *followerFriendsArray;
@property (nonatomic, retain) NSArray *followingFriendsArray;
@property (nonatomic, retain) NSArray *followerFriendsArray;
实现.m:
- (void)handlerGetFollowingInformation:(id)value {
BOOL success = [Utility checkWebServiceErrors:value controller:self.navigationController];
if (success) {
Friend *friend = (Friend *)value;
followingFriendsArray = [[NSArray alloc] initWithArray:friend.Following];
followerFriendsArray = [[NSArray alloc] initWithArray:friend.Followers];
}
}
这就是我需要访问数组的方式:
- (void)followersButtonTapped:(id)sender {
FollowingVC *fvc = [[FollowingVC alloc] initWithNibName:@"FollowingViewController" bundle:nil];
fvc.friends = followerFriendsArray;
[self.navigationController pushViewController:fvc animated:YES];
[fvc release];
}
我像往常一样通过以下方式释放我的两个 ivars:
- (void)viewDidUnload {
self.followingFriendsArray = nil;
self.followerFriendsArray = nil;
[super viewDidUnload];
}
- (void)dealloc {
[followingFriendsArray release];
[followerFriendsArray release];
[super dealloc];
}
我的意思是代码工作得很好,只是我在运行“泄漏”性能工具时担心所说的内存泄漏。
【问题讨论】:
-
你释放了这两个数组吗?顺便说一句,你为什么使用可变数组?
-
我已将它们更改为 NSArray 的。我像往常一样在 View Controller 中以通常的 dealloc 方式释放它们。
标签: iphone objective-c arrays nsmutablearray autorelease