我正在创建一个应用程序,并进行调试,但是在运行instruments时,我发现了一个我无法理解的内存泄漏问题。
如果我尝试按照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告诉我这两个变量
ClassA *objA = (ClassA *)model;
ClassB *objB = (ClassB *)model;
有漏洞,但如果我释放objA
和objB
,我的应用程序会崩溃。
感谢任何帮助!
[self.datasource objectAtIndex:index]
的实现吗? - Lorenzo B