iOS 개발 매 거 용법 소결
Enum,즉 매 거 진 것 입 니 다.C 언어 부터 있 습 니 다.C++,자바,Objective-C,Swift 등 언어 는 모두 해당 하 는 매 거 진 유형 이 있 습 니 다.기능 이 얼마나 적 을 수 있 지만 가장 핵심 적 인 것 은 바로 규범 화 된 정의 코드 중의 상태,옵션 등'상수'입 니 다.
예 를 들 어 우 리 는 개발 에서 사계절 의 변화 에 따라 서로 다른 조작 을 하려 고 합 니 다.우 리 는 먼저 int 형 변 수 를 정의 하고 이 변수 에 서로 다른 값 을 부여 하여 사계절(예 를 들 어 1 은 봄,2 는 여름,3 은 가을,4 는 겨울)을 표시 할 수 있 습 니 다.그러나 이 코드 를 읽 는 사람 에 게 는...그들 은 숫자 1234 가 대표 하 는 구체 적 인 의 미 를 짧 은 시간 안에 알 수 없다.이때 매 거 진 을 선택 하면 이 수요 에 대응 할 수 있다.
C 언어의 매 거
C 언어 에서 매 거 진 형식 을 정의 하 는 방식 은 다음 과 같 습 니 다.
enum
{
= ,
= ,
= ,
=
};
"하나의 매 거 진 이름 을 Test 로 정의 하고 TestA,TestB 등 매 거 진 구성원 의 매 거 진 유형 을 가지 고 있 습 니 다"를 예 로 들 면 다음 과 같이 정의 합 니 다.
enum Test
{
TestA = 0,
TestB = 1,
TestC = 2,
TestD = 3
};
주 1:매 거 진 구성원 들 이'=정형 상수'를 설정 하지 않 았 을 때 기본 값 은 첫 번 째 식별 자 부터 시작 하여 0 부터 차례대로 1 을 증가 합 니 다.주 2:어떤 매 거 진 구성원 에 게'=정형 상수'를 설정 할 때 그 뒤의 표지 부 호 는 이 를 바탕 으로 순서대로 1 을 증가 합 니 다.
이 매 거 진 형식 을 사용 할 때,우 리 는 매 거 진 변 수 를 만들어 야 한다
enum = ;
"Test 라 는 매개 변 수 를 만 들 고 TestB 를 할당 합 니 다"를 예 로 들 면
enum Test test = TestB;
주:매개 변수 값 의 수 치 는 매 거 진 형식의 매 거 진 구성원 중에서 만 선택 할 수 있 습 니 다.매 거 진 형식 을 정의 하 는 동시에 매 거 진 변 수 를 정의 할 수 있 습 니 다.이 매 거 진 변 수 는 초기 화 되 지 않 고 직접 할당 하여 사용 할 수 있 습 니 다.
enum Test
{
TestA = 0,
TestB,
TestC,
TestD
} test;
주:이 매 거 진 이름 은 생략 할 수 있 습 니 다.매 거 진 변 수 를 직접 정의 하면 됩 니 다.("익명 매 거 진"이 라 고 합 니 다)type:def 를 통 해 매 거 진 형식 에'별명'을 설정 하면 int 처럼 매 거 진 형식 을 사용 할 수 있 습 니 다.
typedef enum _Test
{
TestA = 0,
TestB,
TestC,
TestD
} Test;
"별명"을 정의 하면 다음 과 같은 방식 으로 매개 변 수 를 정의 할 수 있 습 니 다.
Test test = TestB;
익명 매 거 진 에 대해 type:def 를 통 해'별명'을 설정 하면 다음 과 같은 형식 으로 변 합 니 다.
typedef enum
{
TestA = 0,
TestB,
TestC,
TestD
} Test;
"별명"을 정의 하면 다음 과 같은 방식 으로 매개 변 수 를 정의 할 수 있 습 니 다.
Test test = TestB;
OC 언어의 매 거 진Objective-C 언어 에서 애플 은 iOS 6 에 두 개의 매크로 를 도입 하여 매 거 진 유형 을 다시 정의 합 니 다(즉,NSENUM 과 NSOPTIONS)이 두 가 지 는 본질 적 으로 차이 가 없고 모두 매 거 진 유형 을 정의 하 는 데 사용 되 지만 사용 중 NSENUM 은 일반 매 거 에 많이 사용 되 며,NSOPTIONS 는 위치 이동 연산 이 있 는 매 거 진 에 많이 사 용 됩 니 다.
NS_ENUM 사용 예시
typedef NS_ENUM(NSInteger, Test)
{
TestA = 0,
TestB,
TestC,
TestD
};
NS_OPTIONS 사용 예시
typedef NS_OPTIONS(NSUInteger, Test) {
TestA = 1 << 0,
TestB = 1 << 1,
TestC = 1 << 2,
TestD = 1 << 3
};
typedef NS_OPTIONS(NSUInteger, Test) {
TestNone = 0,
TestA = 1 << 0,
TestB = 1 << 1,
TestC = 1 << 2,
TestD = 1 << 3
};
이 위 연산 이 있 는 매 거 진 은 같은 매 거 진 변수 에 여러 개의 매 거 진 구성원 을 동시에 할당 할 수 있 는 경우 에 많이 사용 된다.그 원 리 는 각 매 거 진 값 을 위치 나(|)로 계산 하 는 것 이다.이 위 연산 의 매 거 진 구성원 은 위치 나(|)로 계산 한 결과 의 유일 성 을 확보 할 수 있 기 때문에 모든 결 과 는 어떤 매 거 진 구성원 이 위치 나(|)로 계산 하 는 지 역방향 으로 계산 할 수 있 기 때문이다."비트 단위 또는(|)를 매개 변수 로 test 를 사용 하여 매 거 진 구성원 TestA,TestB 와 TestC 를 동시에 할당 합 니 다"를 예 로 들 면
Test test = TestA | TestB;
test |= TestC;
"비트 별 또는(^)매개 변수 test 를 사용 하여 매 거 진 멤버 TestC 를 제거 합 니 다"를 예 로 들 면
Test test = TestA | TestB | TestC;
test ^= TestC;
주:매개 변수 test 자체 에 TestC 가 할당 되 지 않 았 다 면 비트 별 또는(^)를 사용 하면 매개 변수 test 에 매개 변수 TestC 를 추가 합 니 다."비트 와(&)로 매개 변수 test 가 매 거 진 멤버 TestA 를 할당 하 였 는 지 판단 합 니 다"를 예 로 들 면
Test test = TestA | TestB;
if (test & TestA)
{
NSLog(@"yes");
}
else
{
NSLog(@"no");
}
총결산이상 이 이 글 의 전체 내용 입 니 다.여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 었 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 면 댓 글 을 남 겨 주 십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.