这是我制作一些闪存卡的对象。第一种方法(我省略了主要部分)使用传入的运算符生成一个Card对象的NSMutabaleArray并且工作正常。第二种方法,“drawFromDeck”从我的视图控制器调用Deck对象,也可以正常工作,但静态分析器说我可能正在泄漏一个对象。
这是代码。
#import "Deck.h"
@class Deck;
@implementation Deck
@synthesize cards;
- (id)initDeckWithOperator: (NSString*)mathOper {
...
return self;
}
- (id)drawFromDeck {
int index = random() % [cards count];
Card* selectedCard = [[cards objectAtIndex:index] retain];
[cards removeObjectAtIndex:index];
return selectedCard;
}
@end
答案 0 :(得分:6)
是的,你正在泄漏一个物体。你应该
return [selectedCard autorelease];
您-retain
selectedCard
的原因是-release
,因此您有责任-release
。-autorelease
但是您不能使用-drawFromDeck
,因为它必须在函数结束后有效,因此您需要使用-release
将所有权转移到自动释放池。
当然,调用{{1}}的方法不应该{{1}}返回值。