iOS의 static const extern
전언
이전에
static
,const
,extern
의 사용은 모두 그대로 따랐을 뿐 그 의미를 알지 못했기 때문에 최근에 프로젝트에서도 활용했기 때문에 기록을 작성했습니다.우리는 자주 등록UITableViewCell
할 때 identifier
의 키워드를 사용한다. 그러면 우리는.m 파일의 코드에는 다음과 같은 코드가 자주 나타납니다.static NSString * const = @" ";
다음 키워드의 의미는 다음과 같습니다.
static
하나의 전역 변수에 이 키워드를 더하면 이 변수는 정적 전역 변수로 정의된다. 정적 전역 변수는 전체 파일을 볼 수 있고 파일 이외에는 볼 수 없다. 일반 프로그램은 새로 발생한 동적 데이터를 더미에 저장하고 함수 내부의 자동 변수를 창고에 저장한다.자동 변수는 일반적으로 함수의 퇴출에 따라 공간을 방출하지만 정적 변수는 함수의 퇴출로 공간을 방출하지 않는다.정적 변수를 정의하는 장점은 메모리를 절약할 수 있다는 데 있다.
extern
이 키워드는 컴파일러에게 "현재 컴파일된 파일에 이 파일이 정의하지 않았지만 다른 파일에서 정의할 수 있는 식별자가 있습니다."라고 알리기 위해서입니다.우리는 일반적으로 이렇게 쓴다.
//xxxx.h
extern NSString *defaultSomething;
//xxxx.m
NSString *defaultSomething = @"xxxx";
extern과static
이 두 키워드는 마찬가지로 전체 국면의 변수를 수식하지만, 그들은 매우 큰 차이가 있다.
static
수식된 전역 변수는 전역 정적 변수로 변하고 그 작용역은 이 변수가 있는 파일에 있다.extern
수식의 전역 변수는 기본적으로 외부 링크가 있지만 그 역할 영역은 전체 프로젝트이고 그 정의는 프로젝트 내의 임의의 파일에 있을 수 있다.const
이 키워드는 변수를 상수로 변환할 수 있는데
Swift
의 var
와 let
의 수식자에 해당하지만 const
의 위치가 다르면 그 역할도 다르다.int me;
1.const int *p1 = &me;
2.int* const p2 = &me;
3.int const *p3 = &me
위 코드에서 1 우리가 수정
*p1
을 시도할 때 컴파일러는 *p1
는 수정할 수 없고 우리가 수정p1
할 때 정상적으로 수정할 수 있다고 알려준다.우리가 코드 2중*p2
을 수정하려고 시도했을 때는 정상적으로 수정할 수 있었지만, 수정p2
을 시도했을 때는 수정할 수 없었다.그러면 코드 3의 경우 코드 1과 마찬가지로 const
오른쪽에 수식된 부분을 알 수 있다.우리는 우리가 보통 쓰는
static NSString * const cellIdentifer = @"cell"
이 코드를 돌이켜 보면 그 뜻을 잘 이해할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.