일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 알고리즘
- 소프트웨어공학
- 웹개발
- 프로그래밍
- springboot
- 컴퓨터비전
- 사이버보안
- 네트워크보안
- 버전관리
- I'm Sorry
- 딥러닝
- 컴퓨터과학
- 빅데이터
- 보안
- 머신러닝
- 인공지능
- Yes
- 네트워크
- 프로그래밍언어
- 데이터구조
- 데이터베이스
- 클라우드컴퓨팅
- 데이터과학
- 자바스크립트
- 자료구조
- 소프트웨어
- 파이썬
- 디자인패턴
- 데이터분석
- 컴퓨터공학
- Today
- Total
스택큐힙리스트
Objective-C 정적, extern, 공용 변수 본문
나는 헤더 파일을 가져와서 어디에서든 액세스할 수 있는 변수가 필요하지만, 단 하나만 생성되는 정적 변수로 동작하길 원합니다. .m 파일에서는 다음과 같이 지정합니다.
static BOOL LogStuff = NO;
그리고 초기화 메소드에서 이 로깅 값을 설정합니다:
+ (void)initialize
{
LogStuff = ... //원하는 값 입력
}
그러나 .h 파일을 가져와서 변수에 어디에서든 접근할 수 있게 하려고 합니다. 다음과 같이 수행하려고 하지만, 허용되지 않습니다.
static extern BOOL LogStuff;
제가 시도하고 있는 것을 수행할 수 있을까요? 감사합니다.
답변 1
그래서, 헤더 파일에서 변수를 static
으로 선언하면 헤더를 포함하는 각 소스 파일은 별도의 전역 변수를 얻습니다 - 한 소스 파일 내에서 해당 변수에 대한 모든 참조는 동일한 변수를 참조하지만, 다른 소스 파일에서의 참조는 다른 변수를 참조합니다.
하나의 전역 변수를 가져야하는 경우 C++의 클래스 범위에 둘 수 없습니다. 한 가지 옵션은 외부 연결을 가진 전역 변수를 만드는 것입니다. 헤더 파일에서 extern
키워드로 변수를 선언하고, 하나의 소스 파일에서 extern
키워드없이 전역 범위에서 정의합니다. 내부 연결 및 외부 연결은 상호 배제됩니다 - 변수를 동시에 extern
및 static
으로 선언할 수 없습니다.
대안은 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 애플리케이션 개발에 관심을 가진 한국어 사용자들에게 도움이 될 것입니다.