본문 바로가기

Language/Objective-C

Objective-C 첫 시작

이 글은 공부한 내용을 정리하고자 하는 글이오니 건전한 비판은 환영합니다.

 

Objective-C를 시작하게 된 이유는 들어간 회사에서 Objective-C를 사용하고 있기에, 급하게 준비한다.

 

 

오브젝티브-C 문법을 연습하기 위한 파일

요번에 알게 되었는데 오브젝티브-C의 문법을 연습할 때는 

Xcode->new->macOS->Command Line Tool 순서대로 만들어서 클릭하여 준다.

그리고 중요한 것은 

Language를 Objective-C로 작성해줘야 한다.

그러면 파일이 하나 생기게 됩니다.

프린트 해보기

저기 main 함수 안에서 NSLog라고 적힌 곳이 보인다. 저 명령어가 콘솔창에 찍는 것이다.

주의해야 할 점은 NSLog(@"")  @이를 붙여주고 ""안에 다가 적는다면 콘솔창에 뜰 것이다.

물론 자료형에 따라서 ""안에 넣는것이 달라지지만 @이는 무조건 들어가줘야 한다.

 

.h와 .m

먼저 오브젝티브-C는 선언부와 구현부를 나눌 수 있다.

예를 들면 저기 위에 있는 main 폴더 안에서 선언부와 구현부를 작성한다면,

//
//  main.m
//  First
//
//  Created by Mac on 2022/08/01.
//

#import <Foundation/Foundation.h>


@interface Vehicle : NSObject{
    //member variable
    int wheels;
    int seats;
}


-(void)setWheels:(int)w;

@end

//구현
@implementation Vehicle

-(void)setWheels:(int)w{
    wheels = w;
}


@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Vehicle *hello = [Vehicle new];

        
        [hello setWheels:4];
    }
    return 0;
}

이렇게 나눠줄 수 있다. 그러면 코드가 불편해 지니 파일을 하나 만들어 보자면,

먼저 마우스 오른쪽 버튼을 눌러서

new file -> mac os -> cocoa class -> 파일명을 적어주면 .h와 .m 파일이 만들어진다.

 

그래서

Vehicle.h 파일에는 선언만 해준다.

//
//  Vehicle.h
//  First
//
//  Created by Mac on 2022/08/04.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Vehicle : NSObject{
    int wheels;
    int seats;
}

- (void)setWheels:(int)w;


@end

NS_ASSUME_NONNULL_END

그리고 Vehicle.m파일에는 .h 파일에서 선언해 준 것을 로직을 작성하여 준다.

//
//  Vehicle.m
//  First
//
//  Created by Mac on 2022/08/04.
//

#import "Vehicle.h"

@implementation Vehicle

-(void)setWheels:(int)w{
    wheels = w;
}


@end

위와 같이 작성해도 돌아간다.

 

@Property, @synthesize

위에서 멤버 변수안에 set메소드를 따로 만들어 주어서 넣어주었지만, Property와 synthesize를 만들어 주면 간편하게 작성할 수 있다.

선언 파일에서

//
//  Vehicle.h
//  First
//
//  Created by Mac on 2022/08/04.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Vehicle : NSObject{
//    int wheels;
//    int seats;
}
@property int wheels;
@property int seats;

- (void) print;


@end

NS_ASSUME_NONNULL_END

그리고 구현 파일에서

//
//  Vehicle.m
//  First
//
//  Created by Mac on 2022/08/04.
//

#import "Vehicle.h"

@implementation Vehicle
@synthesize wheels;
@synthesize seats;



-(void) print{
    NSLog(@"wheels : %i, seats : %i",wheels,seats);
}



@end

이렇게 작성해주고

main에서

//
//  main.m
//  First
//
//  Created by Mac on 2022/08/01.
//

#import <Foundation/Foundation.h>
#import "Vehicle.h"


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Vehicle *hello = [[Vehicle alloc] init];
        //[[Vehicle alloc]init] -> new로 대체한다.

        [hello setSeats:3];
        [hello setWheels:4];
        
        [hello print];
        
    }
    return 0;
}

 

위와 같이 나오게 된다.

요즘에는 신디사이즈가 필요 없이 get,set이 다 지원이 된다는데 내 맥북에서는 에러가 떠서, 해주었다.

이렇게 프로퍼티와 신디사이즈를 이용하면 get,set을 지원을 해준다.

'Language > Objective-C' 카테고리의 다른 글

Objective-C를 이용한 도서관리 프로그램 만들기  (0) 2022.08.08