2012년 2월 8일 수요일

objective-c 변수의 종류 변수의 범위


변수의 범위
1)인스턴스 변수
인스턴스의멤버로 선언되는 변수로 인스턴스만이 접근할 수 있으며인스턴스마다 메모리 할당을 받아 소유하는 변수입니다.
일반적으로멤버 변수라고 합니다.
인스턴스와수명이 동일합니다.

2)클래스 변수
클래스가소유하는 변수로 변수를 선언할 때 static을붙여서 선언하게 됩니다.
이변수는 클래스로부터 만들어진 모든 인스턴스가 공유하는변수이며 이 변수는 인스턴스가 접근하게 됩니다.
이변수는 프로그램이 실행 될 때 만들어지며 프로그램의실행이 종료되면 메모리에서 소멸됩니다.

3)const 변수
값을변경하지 못하게 하는 변수로 전역의 형태로 사용되게됩니다.

4)auto 변수
일반지역 변수를 선언할 때 사용할 수 있으며 기본적으로초기화가 되지 않으므로 반드시 초기화 해서 이용해야합니다.
초기화하지않으면 의미 없는 값을 가지고 있습니다.

===========================
접근지정자와 인스턴스의 멤버 변수 접근
접근지정자
@private,@protected, @public으로 접근지정자 지정이 가능합니다.
적용범위는 C++와동일합니다.
접근지정자를 기재하지 않으면 @protected가있는 것으로 간주합니다.
기본적으로objective-c에서는 클래스구현 부 내에서만 self를이용해서 멤버 변수에 접근할 수 있습니다.
단예외적으로 메서드의 매개변수로 클래스 타입이 전달되는경우 메서드 내에서 ->를이용해서 접근이 가능합니다.
self는접근 지정자에 상관없이 접근하지만 매개변수로 사용된인스턴스에서 접근할 때는 @public만접근이 가능합니다.