이 글은 공부한 내용을 정리하고자 하는 글이오니 건전한 비판은 환영합니다.
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 |
---|