【发布时间】:2012-05-30 03:08:42
【问题描述】:
我正在对我正在创建的应用程序进行调试,但在运行仪器时发现我无法理解的内存泄漏。
如果我尝试按照 Instruments 的建议修改代码,我的应用程序会因为
而崩溃消息发送到解除分配的实例
有人可以帮我吗?
- (void) objectAtIndex:(int)index {
SpecialObject *specialObj = [SpecialObject sharedInstance];
id model = [self.datasource objectAtIndex:index];
if ([model isKindOfClass:[ClassA class]]) {
ClassA *objA = (ClassA *)model;
specialObj.title = objA.title;
} else if ([model isKindOfClass:[ClassB class]]) {
ClassB *objB = (ClassB *)model;
specialObj.title = objB.title;
}
}
self.datasource 是 NSMutableArray 而 specialObj.title 是 NSString
它们被定义为@property(nonatomic, retain)。
我的问题是 Instruments 告诉我这些 2
ClassA *objA = (ClassA *)model;
ClassB *objB = (ClassB *)model;
是泄漏,但如果我释放 objA 和 objB 我的应用程序崩溃。
感谢您的帮助!
【问题讨论】:
-
dataSource是什么类型的对象?它肯定会从该方法返回一个自动释放的对象吗?
-
嗨,保罗,谢谢:它是一个 NSMutableArray(我已经编辑了第一篇文章)。
-
你能提供
[self.datasource objectAtIndex:index]的实现吗? -
是NSArray类的方法,不是我的。
-
对不起,我的意思是
self.dataSource。我做了复制和粘贴,但我忘了删除第二部分。
标签: objective-c ios memory-management memory-leaks