기타

Objective-C 기본 문법 정리하기

citron031 2022. 12. 9. 23:43
  • 객체 지향 언어 (Object-oriented)
  • 확장자는 .h와 .m (interface와 implementation)
  • #import로 라이브러리를 가져올 수 있다. 
  • NSLog로 출력할 수 있다.
  • 문자열 앞에는 @를 붙인다.
  • 문자열 타입은 NSString을 사용한다.
  • BOOL값은 YES 또는 NO이다. (true, false가 아니다)
  • XCode를 통해서 코드를 빌드, 실행할 수 있다.
#import <Foundation/Foundation.h>



int main(int argc, const char * argv[]) {

    @autoreleasepool {

        NSString *str = @"Test print";

        NSLog(@"%@", str);

        NSLog(@"%d", 1000);

    }

    return 0;

}
  • @interface와 @implementation
  • interface로 선언하고 실제 구현은 implementation에서 이루어진다.
#import <Foundation/Foundation.h>

@interface Tire : NSObject
@end

@implementation Tire
- (NSString *) description {
    return (@"Car Tire !!!");
}
@end

@interface Engine : NSObject
@end

@implementation Engine
- (NSString *) description {
    return (@"Car Engine");
}
@end

@interface Car : NSObject {
    Engine *engine;
    Tire *tires[4];
}
- (void) print;
- (NSString *) getTireByIndex: (int) index;
@end

@implementation Car
- (id) init {
    if(self = [super init]) {
        engine = [Engine new];
        tires[0] = [Tire new];
        tires[1] = [Tire new];
        tires[2] = [Tire new];
        tires[3] = [Tire new];
    }
    return self;
}
- (void) print {
    NSLog(@"%@ 1", engine);
    NSLog(@"%@ 2", tires[0]);
    NSLog(@"%@ 3", tires[1]);
    NSLog(@"%@ 4", tires[2]);
    NSLog(@"%@ 5", tires[3]);
}

- (Tire *) getTireByIndex:(int)index {
    return tires[index];
}
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSString *str = @"Test print";
        NSLog(@"%@", str);
        NSLog(@"%d", 1000);
        Car *car = [Car new];
        [car print];
        NSString *tire = [car getTireByIndex: 1];
        NSLog(@"tire index 1 : %@", tire);
        return (0);
    }
    return 0;
}
  • 콜렉션 클래스의 종류로 NSArray, NSDictionary, NSSet 등이 있다.
NSArray *arr = @[@"apple", @"banana", @"cocoa"];

// Enumeration
for(id str in arr) {
	NSLog(@"log %@", str);
}

// 변수 사용
for(int i = 0; i < [arr count]; i++) {
	NSString *str = [arr objectAtIndex:i];
    NSLog(@"element: %@", str);
}

NSDictionary는 key-value형태로 값을 저장한다.

NSDictionary *person = @{@"name": @"gildong", @"age": 35, @"familyName": @"Hong"};

id name = person[@"name"];

[person setObject:@"Park" forKey:@"familyName"];
id Fname = person[@"familyName"]; // Park

[person removeObjectForKey:@"age"]; // age 키, 값 삭제

(NSArray *) keys = [person allKeys];
(NSArray *) values = [person allValues];