스택큐힙리스트

Objective-C 정적, extern, 공용 변수 본문

카테고리 없음

Objective-C 정적, extern, 공용 변수

스택큐힙리스트 2023. 11. 18. 00:19
반응형

나는 헤더 파일을 가져와서 어디에서든 액세스할 수 있는 변수가 필요하지만, 단 하나만 생성되는 정적 변수로 동작하길 원합니다. .m 파일에서는 다음과 같이 지정합니다.


static BOOL LogStuff = NO;

그리고 초기화 메소드에서 이 로깅 값을 설정합니다:


+ (void)initialize
{
LogStuff = ... //원하는 값 입력
}

그러나 .h 파일을 가져와서 변수에 어디에서든 접근할 수 있게 하려고 합니다. 다음과 같이 수행하려고 하지만, 허용되지 않습니다.


static extern BOOL LogStuff;

제가 시도하고 있는 것을 수행할 수 있을까요? 감사합니다.

답변 1

그래서, 헤더 파일에서 변수를 static으로 선언하면 헤더를 포함하는 각 소스 파일은 별도의 전역 변수를 얻습니다 - 한 소스 파일 내에서 해당 변수에 대한 모든 참조는 동일한 변수를 참조하지만, 다른 소스 파일에서의 참조는 다른 변수를 참조합니다.


하나의 전역 변수를 가져야하는 경우 C++의 클래스 범위에 둘 수 없습니다. 한 가지 옵션은 외부 연결을 가진 전역 변수를 만드는 것입니다. 헤더 파일에서 extern 키워드로 변수를 선언하고, 하나의 소스 파일에서 extern 키워드없이 전역 범위에서 정의합니다. 내부 연결 및 외부 연결은 상호 배제됩니다 - 변수를 동시에 externstatic으로 선언할 수 없습니다.

대안은 Panos가 제안한 방법처럼 변수 대신 클래스 메소드를 사용하는 것입니다. 이렇게 하면 기능이 클래스 범위 내에 유지되므로 의미적으로 더 의미가 있고, 필요한 경우 @private로 설정할 수도 있습니다. 이는 애플리케이션에서 병목 현상으로 의심되는 경우에도 성능에 미미한 저하가 있을 수 있지만, 항상 프로파일링을 먼저 수행하는 것이 좋습니다.

답변 2

Objective-C 정적, 외부, 공개 변수에 대한 이야기
Objective-C는 iOS 및 macOS 애플리케이션 개발에 널리 사용되는 프로그래밍 언어입니다. 이 언어는 C 프로그래밍 언어의 상위 집합으로, 객체지향 프로그래밍 기능과 C 언어의 힘을 결합한 형태입니다. Objective-C에서 변수를 선언할 때 세 가지 중요한 키워드인 static, extern 및 public을 사용할 수 있습니다.
먼저 static 변수는 프로그램의 수명이 지속되는 동안 유지되는 지역 변수입니다. 함수 내에서 선언되는 경우 static 키워드를 사용하여 변수의 지속성을 보장할 수 있습니다. 이러한 변수는 함수가 호출될 때마다 새로운 메모리 공간을 할당받지 않고, 한 번 할당된 값을 유지하며 계속 사용할 수 있습니다. 예를 들어, 함수가 호출될 때마다 숫자를 1씩 증가시키는 카운터를 구현하고자 한다면, static 변수를 사용하여 이를 쉽게 구현할 수 있습니다.
다음으로 extern 변수는 다른 소스 파일에 선언되었지만 동일한 프로그램 내에서 사용되는 전역 변수입니다. 하나의 소스 파일에서 extern으로 변수를 선언하면 다른 소스 파일에서 해당 변수를 사용할 수 있게 됩니다. 이는 코드의 재사용성과 일관성을 높이는 데 도움이 됩니다. 예를 들어, 프로그램 내에서 공유되는 데이터나 설정 정보를 extern으로 선언하여 여러 소스 파일에서 쉽게 접근할 수 있게 할 수 있습니다.
마지막으로 public 변수는 클래스나 인터페이스에서 외부에 공개되는 변수입니다. Objective-C에서는 @property와 @synthesize 키워드를 사용하여 public 변수를 정의하고 접근자 메서드를 자동으로 생성할 수 있습니다. 이를 통해 객체의 속성을 캡슐화하고, 변수에 직접 접근할 필요 없이 간접적으로 접근할 수 있습니다. 이는 객체지향 프로그래밍의 핵심 개념 중 하나인 정보 은닉을 실현하기 위한 중요한 기능입니다.
Objective-C에서 static, extern, public 변수는 각각 지역 변수의 지속성, 전역 변수의 공유성, 클래스나 인터페이스의 속성 캡슐화를 구현하는 데 사용됩니다. 이러한 변수들은 프로그램의 효율성, 가독성 및 유지 보수성을 향상시키는 데 도움이 됩니다. 따라서 Objective-C 프로그래머에게는 이러한 변수들을 올바르게 사용하는 것이 중요합니다.
이 글은 Objective-C의 static, extern, public 변수에 대한 SEO 최적화된 한국어 에세이입니다. Objective-C 변수에 대한 기본 개념과 활용 방법을 설명하고 있으며, iOS 및 macOS 애플리케이션 개발에 관심을 가진 한국어 사용자들에게 도움이 될 것입니다.

반응형
Comments