iOS 유형 인코딩(Type Encodings)
@encode()
을 통해 주어진 형식의 인코딩 문자열을 얻을 수 있다. 다음 표에는 여러 종류의 인코딩 문자열이 열거되어 있다.Code
Meaning
c
A
char
i
An
int
s
A
short
l
A
long
l
is treated as a 32-bit quantity on 64-bit programs. q
A
long long
C
An
unsigned char
I
An
unsigned int
S
An
unsigned short
L
An
unsigned long
Q
An
unsigned long long
f
A
float
d
A
double
B
A C++
bool
or a C99 _Bool
v
A
void
*
A character string (
char *
) @
An object (whether statically typed or typed
id
) #
A class object (
Class
) :
A method selector (
SEL
) [array type]
An array
{name=type...}
A structure
(name=type...)
A union
b
num A bit field of num bits
^
type A pointer to type
?
An unknown type (among other things, this code is used for function pointers)
중요: Objective-C는 long double 형식을 지원하지 않으며 @encode(long double)는 d를 되돌려줍니다. double 형식의 인코딩 값과 같습니다.
예:
char *buf = @encode(NSObject*[12]);
NSLog(@"encode: %s ", buf);
buf = @encode(float[12]);
NSLog(@"encode: %s ", buf);
buf = @encode(float*[12]);
NSLog(@"encode: %s ", buf);
인쇄 정보:
2015-10-08 12:20:17.370 AppTest[8531:126859] encode: [12@]
2015-10-08 12:20:17.371 AppTest[8531:126859] encode: [12f]
2015-10-08 12:20:17.371 AppTest[8531:126859] encode: [12^f]
설명: 한 수조의 유형 인코딩은 중괄호로 표시되고 중괄호는 수조의 구성원 수량과 유형이다. 위의 예에서 첫 번째는 12개의 대상을 나타내는 수조, 두 번째는 12개의 부점형 변수를 나타내는 수조, 세 번째는 12개의 부점형 지침을 나타내는 수조이다.
예:
typedef struct example {
int* aPint;
double aDouble;
char *aString;
int anInt;
} Example;
char *buf = @encode(Example);
NSLog(@"encode: %s ", buf);
인쇄 정보:
2015-10-08 15:33:07.906 AppTest[15180:198504] encode: {example=^id*i}
설명: 구조체의 유형 인코딩은 큰 괄호로 표시한다. 괄호 중에서 먼저 구조체 유형을 표시하고 그 다음에 등호를 따른다. 등호 뒤에는 선후 순서에 따라 구조체 구성원 변수의 유형을 열거한다. 상례에서 선후 순서에 따라^i는 int형 지침을 표시하고 d는 더블 유형을 표시하며 *는char형 지침, 즉 문자열을 표시한다.i 는 int 형식을 나타낸다.또한 구조체 포인터와 구조체 포인터를 가리키는 포인터의 유형 인코딩은 각각 다음과 같습니다.
char *buf = @encode(Example*);
NSLog(@"encode: %s ", buf);
buf = @encode(Example**);
NSLog(@"encode: %s ", buf);
인쇄 정보:
2015-10-08 15:55:35.642 AppTest[15968:214671] encode: ^{example=^id*i}
2015-10-08 15:55:35.642 AppTest[15968:214671] encode: ^^{example}
마지막으로 대상은 특수한 구조체로 여겨지기 때문에 그들의 유형 인코딩과 구조체는 유사하다.
NSObject
를 @encode()
에 전참하여 얻은 것은 {NSObject=#}, NSObject단 한 명의 멤버가 이사이고 클라스 유형이다.그래서 등호 뒤에 # 기호가 붙었다.다음 예제에서 자세히 살펴보십시오.
@interface Book : BaseModel
{
@private
NSString* _privateName;
int* aPint;
double aDouble;
char *aString;
int anInt;
}
@property (strong, nonatomic) NSString *author;
@property (assign, nonatomic) NSUInteger pages;
@property (strong, nonatomic) Pen *pen;
+ (void)ClassMethod;
- (void)InstanceMethod;
@end
char *buf = @encode(Book);
NSLog(@"encode: %s ", buf);
인쇄 정보:
2015-10-08 16:05:53.097 AppTest[16345:222706] encode: {Book=#@^id*i}
설명: 뚜렷하다. 선후 순서에 따라Class, 대상, int형 지침, 더블, c 문자열, int 유형 순으로 나뉜다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.