2013-05-05 4 views
2

정적 변수 "변수 static을 선언하면 해당 범위가 클래스에만 제한되고 파일에 구현 된 클래스의 일부로 제한됩니다."(Apple doc).클래스 확장에서 정적 변수와 변수의 차이점은 무엇입니까?

변수가 클래스 정의에 정의 된 클래스에만 제한 범위가 있다고 정의 된 것 같습니다.

그건 비슷합니다!

클래스 확장에서 정적 변수와 변수의 차이점은 무엇입니까?

답변

6

static 변수는 정의 된 파일에 묶여 있습니다.이 파일 외부에서는 액세스 할 수 없으며 전체 프로그램에서 저장소에 대해 하나의 저장소 만 만들어집니다.

저장 영역에 대한 구분은 정적이 아닌 전역 변수에도 적용됩니다. 프로그램에 하나만 존재합니다.

클래스 확장의 변수는 선언 된 파일에 대한 가시성이 마찬가지로 제한되지만 인스턴스는입니다. 생성 한 클래스의 각 인스턴스에 연결된 새로운 저장소가 있습니다.

static 변수를 만들고 클래스의 여러 인스턴스에서 값을 변경하면 모든 인스턴스에 동일한 값이 표시됩니다. ivar의 경우는 그렇지 않습니다. 각 객체는 해당 변수에 대해 자체 값을 변경하고 보유 할 수 있습니다.

(이는 다른 언어에있는 클래스 변수를 시뮬레이트하기 위해 Ob35C에서 변수가 때때로 사용되는 이유입니다.)