지난 몇 시간 동안 objective-C의 메모리 관리 주제에 대한 수십 개의 게시물을 검색 한 결과이를 얻지 못했습니다. 죄송합니다. 나는 최선을 다하고있다!executeFetchRequest를 사용하여 객체를 반환하는 메서드
'executeFetchRequest'를 호출하는 메소드에서 객체를 반환하는 방법에 대한 답을 찾고 있습니다. 여기
은 ...+ (Player *)loadPlayerWithPredicate:(NSString *)name:(NSInteger)index
{
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Player" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
// Set filter predicate
NSString *strFilter = [NSString stringWithFormat:@"%@ = %d", name, index];
[request setPredicate:[NSPredicate predicateWithFormat:strFilter]];
// Create the sort descriptors array
NSSortDescriptor *sorter = [NSSortDescriptor sortDescriptorWithKey:name ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sorter]];
NSError *error = nil;
Player *player = nil;
NSArray *array = [managedObjectContext executeFetchRequest:request error:&error];
if ([array count] == 1)
{
player = [array objectAtIndex:0];
//[player retain]; // ???
}
[request release];
return player;
}
일부 코드입니다하지만 정말 필요한 것은 메소드가 리턴 한 후 곁에있는 "플레이어"개체입니다.
'플레이어'가 반환 된 후 어떻게 살 수 있습니까?
'보유'라고해야하나요? (그리고 수신기에서 'release'라고 부름) 객체를 복사해야합니까?
나는 다음에서 이해를 도출 할 수 있도록
난 그냥 간단한 예를 필요로 등 ALLOC, 복사, 새에 대한 다른 모든 게시물을 읽어 보시기 바랍니다. 이 메서드를 호출하는 리시버의 예를 보여 주면 감사하겠습니다.감사합니다.