2011-04-22 6 views
2

I이아이폰

- (NSDictionary *)getCellValuesForRow:(int)row { 
NSMutableDictionary *dictValues= [[NSMutableDictionary alloc] init]; 

Outage *outage = [listOutage objectAtIndex:row]; 

[dictValues setObject:outage.duration forKey:@"OutageDuration"]; 
    return dictValues; 

}

이 값을 추천하는 방법이 방법으로 저장되어있는이 메모리를 해제하는 방법

NSDictionary *dict = [[NSDictionary alloc] initWithDictionary:[self getCellValuesForRow:(indexPath.row-1)]]; 
시나리오

답변

1

getCellValuesForRow에서 dictValues를 자동으로 가져 오거나 할당하지 마십시오. 이것은 오토 릴리즈 계속됩니다

NSMutableDictionary *dictValues= [NSMutableDictionary dictionary]; 

대부분의 경우 (가 오토 릴리즈 풀을 취소 한 후 주위를 유지해야하는 경우) 다음 나중에 할당 해제, 그것을 ALLOC 그것을 호출 무엇이든의 책임이어야한다.

전화가 걸려 오는 전화가 없어도 자동으로 전화를 걸 수 있습니다.

2

이것은 autorelease을위한 것입니다.

NSMutableDictionary *dictValues= [[[NSMutableDictionary alloc] init] autorelease]; 
0

대안은 간단하게 효과적으로 댄 제안 것과 같은 일이다

NSMutableDictionary *dictValues= [NSMutableDictionary dictionary]; 

을 사용하는 것입니다. 그냥 적은 타이핑.

너무, 당신의 다음 라인에 적용

NSDictionary *dict = [NSDictionary dictionaryWithDictionary:[self getCellValuesForRow:(indexPath.row-1)];