2012-04-06 4 views
2

"로컬 개체 변수"는 메서드에서 사용되거나 초기화되는 변수입니까? 아니면 인수로 받아 들여지는 변수입니까? 이 용어는 Xcode의 문서 또는 Google에서 찾을 수 없습니다."로컬 객체 변수"란 무엇을 의미합니까?

내가 사용하고있는 Objective-C 책에서 이것을 발견했습니다. 전체 견적은

입니다. 기본 C 데이터 유형의 로컬 변수에는 기본 초기 값이 없으므로 사용하기 전에 값을 설정해야합니다. reduce 메소드의 3 개 지역 변수는 사용되기 전에 값으로 설정되므로 여기서는 문제가되지 않습니다. 로컬 객체 변수은 기본적으로 이 아닌으로 초기화됩니다. 메서드 호출을 통해 값을 유지하는 인스턴스 변수와 달리 이러한 로컬 변수에는 메모리가 없습니다. 따라서 메서드가 반환 된 후 이러한 변수의 값이 사라집니다. 메서드가 호출 될 때마다 해당 메서드에 정의 된 각 로컬 변수는 변수 선언과 함께 지정된 값 (있는 경우)으로 다시 초기화됩니다. "

+0

"로컬 개체 변수"는 Objective-C의 일반적인 용어가 아닙니다. 어디에서 사용했는지 알고 있습니까? –

+0

내 책에는 "기본 C 데이터 유형 인 지역 변수는 기본 초기 값이 없으므로 사용하기 전에 값을 설정해야합니다. – stumped

+0

'reduce' 메소드의 세 지역 변수는 값으로 설정됩니다 Lovl 객체 변수는 기본적으로 _nil_으로 초기화됩니다. 인스턴스 변수 (메소드 호출을 통해 값을 유지합니다 (이 로컬 변수는 메모리가 없습니다. 따라서 메소드가 반환 된 후, 메소드가 호출 될 때마다 해당 메소드에 정의 된 각 로컬 변수가 지정된 값으로 다시 초기화됩니다 (변수 선언과 함께). " – stumped

답변

1

사용자 의견에 따라 본인이 이해 한 내용입니다. (C와 Objective-C에서 중괄호 '{}'로 표시됨) 지역 변수는 전역 변수에서 볼 수 있고 전역 적으로 사용할 수있는 전역 변수와 달리 사용 된 범위에서 선언됩니다. 파일, 여러 파일 또는 선언 가시성에 따른 전체 프로그램) 인스턴스 변수는 클래스 인스턴스의 일부이며 모든 메소드 (@public을 사용하여 선언 된 경우 다른 클래스도 사용할 수 있지만 일반적으로 좋지는 않습니다) .

원시 로컬 변수는 int, float, char 등의 C 기본형 인 로컬 변수입니다.이 책에서 "로컬 객체 변수"라고 부르는 것은 간단히 Objective-C 객체에 대한 포인터 인 포인터 유형의 로컬 변수입니다. 예 : NSString *, NSDictionary *id입니다.

로컬 변수는 힙이 아니라 스택에 저장됩니다. 스택의 변수는 선언 된 메소드 또는 함수 호출의 끝에서 사라집니다. 스택 오버플로 질문에는 스택과 힙의 차이점을 설명하는 좋은 답변이 있습니다. What and where are the stack and heap?

"로컬 변수 objective-c"에 대한 Google 검색의 첫 번째 결과는 http://blog.ablepear.com/2010/04/objective-c-tuesdays-local-variables.html입니다.

+0

감사합니다. – stumped

관련 문제