1
이것은 플래시 카드를 만들기 위해 만든 객체입니다. 첫 번째 방법 (나는 주요 부분을 생략했다)은 전달 된 연산자로 Card 객체의 NSMutabaleArray를 생성하고 올바르게 작동합니다. 두 번째 메서드 인 "drawFromDeck"은 뷰 컨트롤러의 Deck 객체에서 호출되며 제대로 작동하지만 Static Analyzer에서는 객체가 누출 될 수 있다고 말합니다.정적 분석기가 객체의 누출 가능성이 있다고 말합니다.
다음은 코드입니다.
#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
나는 처음부터 카드를 보관하지 않는 것이 더 명확 할 것이라고 말하고 싶습니다. 그는 그 시점에서 소유권을 가질 이유가 없습니다. 카드 * selectedCard = [카드 objectAtIndex : 색인]; –
@Joshua Weinberg - 그러나 그가 그렇게했다면 즉시 제거 될 수 있습니다. -removeObjectAtIndex :가 호출되었습니다. autorelease를 사용하면 최소한 메서드에서 반환 할 수있을만큼 오래 존재합니다. –
내 가정을 테스트, 내가 틀렸다. 생각하기에 이제는 생각합니다. –