기타
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];