2010-02-03 4 views
0

누군가가 나에게 큰 일을 코드 솔루션을 제안,하지만 내 이해를 위해, 나는 코드의 두 블록 사이의 차이가 무엇인지 알고 싶습니다 :재사용 NSMutableDictionary는 포럼에서

블록 1

NSMutableDictionary* step_info = [NSMutableDictionary dictionary]; 

블록 2

NSMutableDictionary* step_info = nil; 
step_info = [NSMutableDictionary dictionary]; 

또한 그 step_info을 언급하는 것이 중요 할 수있다 채워 다른 NSmutabledictionary에로드 다시 반복해야한다.

도움을 주셔서 감사합니다.

+0

내가 다른 질문에 responsed을. 변수를 알려진 상태로 초기화하는 것은 제 개인적인 스타일입니다. 이 경우에는 필요하지 않습니다. 보다 복잡한 변수 또는 구조를 사용하면 더 이해할 수 있습니다. 이것은 iPhone 프로그래밍과 관련이 없으며 C 프로그래밍 및 스타일과 관련이 있습니다. –

답변

2

없음. 컴파일러는 step_info = nil을 최적화하고 똑같은 코드를 남겨 둡니다.

NSMutableDictionary *step_info; 
step_info = [NSMutableDictionary dictionary]; 
+0

좋아, 여기 내 질문 다시 : 내가 그 라인 코드를 사용한다면 step_info = [NSMutableDictionary dictionary]; 내 프로그램의 다른 위치에서 여러 번 반복되는 경우, 내 step_info NSMutabledicstionnary와는 어떤 관계가 있습니까? – user261874

+1

@gpsdev : 이전의 'step_info' 사전은 재정의 된 후에 더 이상 액세스 할 수 없으며 autorelease 풀을 채 웁니다. – kennytm

0

첫번째 NSMutableDictionary* step_info; 당신이 동일한 코드 블록에 나중에 step_info = [NSMutableDictionary dictionary]을 사용할 수 있습니다 갖는

다음

당신이 취할 수있는 또 다른 방법입니다.

여러 메서드에서 step_info에 값을 할당하려면 NSMutableDictionary* step_info을 헤더 파일의 @interface 섹션에 추가하는 것이 좋습니다.

당신이 당신의 구현 파일에 어떤 방법으로 step_info = [[NSMutableDictionary alloc] init]을 사용하여 다음 값과 키 이런 식으로 할당 할 수 있습니다 그 방법 : [step_info setValue: value forKey: key];