2011-04-25 3 views
2

iPhone 개발에 초보자를 도우십시오. 내 응용 프로그램에서는이 작업을 많이 수행하고 Instruments는이를 누수로 나타냅니다. 이 작업을 수행하는 올바른 방법은 무엇입니까?일시적인 NSString StringWithFormat을 언제 릴리스해야합니까?

숫자 데이터를 NSMutableDictionary 개체에 사용할 문자열로 다시 포맷하려고합니다. 그래서 나는 이런 식으로 뭔가 한 경우에 그것이 좋을 것이라고 생각 : 내가 싫어

[myDict setObject:[NSString stringWithFormat:@"%d", section] forKey:@"Category"]; 

그것을 할 3 개 라인을 작성해야하기를 내가해야하는 경우

NSString *cat = [NSString stringWithFormat:@"%d", section]; 
[myDict setObject:cat forKey:@"Category"]; 
[cat release]; 

... 것입니다 그런 일시적인 사용을위한 최선의 관행은 무엇입니까?

답변

8

해제 할 필요가 없습니다. stringWithFormatalloc, init, new, copy 또는 mutableCopy으로 시작하지 않으므로 명시 적으로 보유하지 않는 한 해제하지 않아도됩니다.

악기에 누출이 표시되면 누출 된 개체가 어디에 할당되었지만 실제로 누출의 원인이되는 코드는 아닌지를 보여줍니다. 나는 당신이 누출되고 있다고 의심합니다. myDict, 그리고 그 안의 모든 물체도 새어 나옵니다.

+0

감사합니다. 사전 메모리 관리에 대한 후속 질문을 게시합니다 ... –

2

절대로 공개하지 마십시오. 이미 자동 응답이 있습니다.

당신은 오직 이름이 +alloc로 시작하는 방법, +new -copy, -mutableCopy, 또는 -retain를 통해 당신에게 주어진 객체를 해제

. 이름이 다른 어떤 것으로 시작하면, 귀하는 그 이름을 소유하지 않으며이를 공개 할 책임이 없습니다.