当我遇到死胡同时,我以为我真的很接近发布我的这个新应用程序了。我的代码在模拟器(Xcode 4.0.2)中没有内存泄漏,但在我的设备上报告内存泄漏。
我认为我的问题与我复制一个对象有关,因为在我的故障排除尝试中,我尝试不使用副本,然后内存泄漏就消失了(但我的功能当然也是如此!)。
我所做的是将 UIView 子类的多个实例添加到数组中。这个子类(其中 cityToAdd 是一个实例的城市)有两个 UIView 和一些我需要在稍后阶段访问的变量。
如果我这样做,我的设备上会出现内存泄漏:
[arrayOfCities addObject:[[cityToAdd mutableCopy] autorelease]];
但如果我这样做,我不会(但功能松散)
[arrayOfCities addObject:cityToAdd];
在子类中,我有这个来处理复制:
- (id)mutableCopyWithZone:(NSZone *)zone{
Cities *newCity = [[Cities allocWithZone:zone] init];
[newCity initWithCityName:cityName
onRing:ring
withTimeZone:timeZone
withTimeZoneOffset:timeZoneOffset
withDSTAngle:DSTAngle
andDST:isDST];
return newCity;
}
从 Instruments 我在设备上测试时得到这个:
当我深入到第二行时,它会显示:
最后是我的 initWithCityName 方法(抱歉发了这么长的帖子!!)我把它作为图片从 Instruments 中获取颜色和消息...
最后,UIIMage imageNamedUniversal 是一个扩展,可以在 iPad 上为我提供@2x 图像(但我尝试使用普通的 imageNamed 并获得相同的内存泄漏)。
我不知道从哪里开始!!欣赏任何想法。
谢谢