Objective-C : Typedef, Struct

준우·2024년 7월 25일

Objective-C 이야기

목록 보기
17/19
post-thumbnail

typedef

Objective - C 에는 기존 데이터 타입에 새로운 이름을 부여하는데 사용하는 키워드가 있는데 그게 바로 typedef 임.

// [기존 타입] [별칭]
typedef NSString * MyString;
// 반환 (^블럭별칭)(매개변수)
typedef void(^DoneBlock)(NSString *);

@interface BlockTest : NSObject
{
		MyString name;
		// 매개변수 X, 반환 X 인 블럭함수 입니다. - 자료형
		// 반환 (^블럭이름)(매개변수);
		void (^simpleBlock)(void);
		
- (void)functionWithBlockParam:(DoneBlock)done;

- (void)functionWithBlockParam2:(void (^)(NSString *))done;

사용 예시

구조체

typedef struct {
    float x;
    float y;
} Point;

Point point;
point.x = 10.0;
point.y = 20.0;

블록(Block)

typedef void (^CompletionBlock)(BOOL success);
CompletionBlock block = ^(BOOL success) {
    if (success) {
        NSLog(@"Success!");
    } else {
        NSLog(@"Failure!");
    }
};

클래스

@class MyClass;
typedef MyClass *MyClassRef;
MyClassRef myObject = [[MyClass alloc] init];

Struct

Objective-C에서 struct는 여러 개의 변수(필드)를 그룹화하여 하나의 복합 데이터 타입을 정의하는 데 사용됩니다.

struct는 주로 관련된 데이터를 하나의 단위로 묶어 관리할 때 유용합니다.

왜냐하면, Swift 의 struct 와는 달리, Objective-C 의 struct 는 Method 를 가지지 못하기 때문!!

Struct 정의

// 구조체 정의 - typedef 사용 x
struct Ppakcoder {
		NSString *name;
		NSInteger age;
};

// 구조체 정의 - typedef 사용 o - -> 이 방법 많이 사용함.
typedef struct {
	NSString *name;
	NSInteger age;
} Dog;

Struct 사용

struct Ppakcoder aPpakcoder;
aPpakcoder.name = @"김준우";
aPakcoder.age = 10;

Dog aDog;
aDog.age = 10;
aDog.name = @"댕댕이";

// &myDog : 해당하는 구조체의 주소 값을 가져올 때 사용
Dog *myDogRef = &myDog;

// -> 포인터에 접근한다는 뜻
NSString * myDogName = myDogRef->name;

NSString * checkMyDogName = myDogRef->name = @"멍뭉이";

0개의 댓글