【发布时间】:2010-12-01 05:45:23
【问题描述】:
我正在开发一个 iphone 应用程序,但遇到了一些内存泄漏问题。我读过一些关于垃圾收集的文档,它听起来很简单,但我一定遗漏了一些东西。我有一个 viewController 需要访问一个可能需要不时重新填充的数组。这是我所拥有的简化版本:
//AppDelegate.m
- (NSMutableArray *)getMathFacts {
//Some database stuff
NSMutableArray * arr = [[NSMutableArray alloc] init];
while (sqlite3_step(math_fact_statement) == SQLITE_ROW) {
[arr addObject:[[NSNumber numberWithInt:sqlite3_column_int(math_fact_statement, 0)] autorelease]];
}
return arr;
}
//ViewController.h
@interface ReviewViewController : UIViewController {
NSMutableArray *reviewArr;
}
@property (retain, nonatomic) NSMutableArray *reviewArr;
//ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
[self loadMathFacts];
}
- (void)loadMathFacts {
self.reviewArr = [appDelegate getMathFacts];
}
- (void)loadAllMathFacts {
self.reviewArr = [appDelegate getAllMathFacts];
}
-(IBAction) getAll {
[reviewArr release];
[self loadAllMathFacts]
}
GetAllMathFacts 与 getMathFacts 类似,只是 SQL 语句不同。 当我运行此检查是否泄漏时,它就像一个筛子。这似乎很简单,但我觉得我已经尝试了所有方法,它只是移动了泄漏。
任何建议将不胜感激。 谢谢
【问题讨论】:
-
iPhone 没有垃圾收集器。这部分在 MacOS X 上的 Cocoa 中,还没有进入 iPhone。
标签: iphone memory pointers memory-leaks