2011-08-24 6 views
2

일반적으로 나는 다음과 같은 것을 (아래) 필요로하는 값을 얻는다.NSDictionary에서 가져온 값을 보존하거나 해제해야합니까?

NSDictionary *state = [notification.userInfo objectForKey:@"state"]; 
[self.tabBarItem setBadgeValue:[state objectForKey:@"short"]]; 

NSDictionary에서 가져온 값을 보유/해제 할 가치가 있는가? 뭔가 이런 식으로 :

NSDictionary *state = [[notification.userInfo objectForKey:@"state"] retain]; 
[self.tabBarItem setBadgeValue:[state objectForKey:@"short"]]; 
[state release]; 

그것은 더 많은 메모리 친절한가요? 아니면 그 일을하기 위해 자동 풀 풀에 신경 써야하지 않습니까?

답변

3

아니요, 그렇게 할 필요가 없습니다. [notification.userInfo objectForKey:@"state"]의 결과는 항상 자동 렌더링 된 객체입니다. retainrelease을 추가하면 아무 것도 변경되지 않습니다.

+0

그래서 '상태'의 속도가 향상되지 않습니까? 왜 나는 이것에 대해 생각 하는가? 나는'autorelease' 변수를 사용하지 말라는 소식을 보았다. 가능하면 수동으로 해제하십시오. 이것이 내가 생각하는 이유입니다 ... – NilColor

+1

@NilColor 예, 때로 자동 응답 된 변수를 사용하면 속도가 향상 될 수 있습니다. 그러나이 상황에서 당신은 그것을 피할 수 없다는 것이 요점이다.'-objectForKey :'는 항상 자동으로 릴리즈 된 객체를 반환 할 것이다. 그러니 걱정하지 마세요 :) – jtbandes

관련 문제