在iPhone上。为什么这样的代码会导致内存泄漏?2分钟后,净字节数翻了一番。我所做的就是用一个NSTimer调用下面的方法在屏幕上移动一个球。
有什么想法吗?
- (void)nextFrame:(NSNotification *)notification {
ballInstance.frame = CGRectMake(value, 0, 320, 480);
}这里是“完整”代码,新项目,行为仍然相同。它在屏幕上移动一个jpg,并且内存被大量消耗。如果我将'++‘从'value’中删除,那么内存就可以了。(换句话说,有静态图形)所以.正在缓存的图像是问题所在吗?如果是这样,我怎样才能阻止它达到天文数字呢?
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window makeKeyAndVisible];
NSTimer * nSTimer =[NSTimer scheduledTimerWithTimeInterval: .02
target: self
selector: @selector(tick)
userInfo: nil
repeats: YES];
value =0;
}
- (void)tick {
NSLog(@"tick");
myOutlet1.frame = CGRectMake(value++, 0, 320, 480);
}发布于 2009-10-06 16:35:48
张贴的代码没有泄漏。问题就在其他地方。
如果您知道nextFrame:内部存在漏洞,那么它必须在-[Ball setFrame:]中,因为它是在此方法中发送的唯一消息。
发布于 2009-10-06 16:45:28
泄漏不在您显示的代码中,特别是如果frame是@synthesized属性的话。您要么需要显示更多的代码,要么花一些高质量的时间与仪器一起找出泄漏的内容和分配的位置。
发布于 2009-10-06 20:39:08
据苹果公司称:
这是iPhone OS3.0中的一个bug。图形系统的分配器 是否将realloc事件报告为malloc事件,因此ObjectAlloc符合 这些新对象几乎从未被释放过。我没有 确定为什么在添加泄漏工具时可能看不到它,但是 这两种工具都不会显示出真正的漏洞。
虽然我仍然不知道如何补救它。
https://stackoverflow.com/questions/1526635
复制相似问题