Objective-C는 Swift와 다르게 각 문장의 끝에 세미콜론을 붙여야한다.
Objective-C 프로그램의 기본 구조를 알아보자!
// 컴파일러에게 컴파일을 시작하기 전에 Foundation.h 파일을 포함하라고 지시하는 전처리기 명령
#import <Foundation/Foundation.h>
// 인터페이스 만드는 방법, 모든 객체의 기본 클래스인 NSObject 상속
@interface SampleClass:NSObject
// 인스턴스 메서드 선언
- (void)sampleMethod;
// 인터페이스 끝
@end
// 인터페이스 구현부
@implementation SampleClass
// 메소드 구현
- (void)sampleMethod {
NSLog(@"Hello, World! \n");
}
@end
// 프로그램 실행이 시작되는 main 함수
int main() {
/* my first program in Objective-C */
// SampleClass 클래스의 인스턴스를 생성하고 초기화, sampleClass 변수에 할당
SampleClass *sampleClass = [[SampleClass alloc] init];
// sampleMethod 메서드를 호출
[sampleClass sampleMethod]; // 출력: Hello, World!
// main 함수 0을 반환, 프로그램 종료
return 0;
}
Objective-C 프로그램은 다양한 토큰으로 구성되며 토큰은 키워드, 식별자, 상수, 문자열 리터럴 또는 심볼이다.
예를 들어, 해당 코드는
NSLog(@"Hello, World! \n");
이렇게 6개의 개별 토큰으로 구성되어있는 것이다.
NSLog
@
(
"Hello, World! \n"
)
;
int : 일반적인 정수 타입 (32비트)
short : 작은 정수 타입 (16비트)
long : 큰 정수 타입 (32비트 이상, 시스템에 따라 다름)
long long : 더 큰 정수 타입 (64비트)
unsigned : 부호 없는 정수 타입
int anInteger = 42;
float : 단정밀도 부동 소수점 타입 (32비트)
double : 배정밀도 부동 소수점 타입 (64비트)
float aFloat = 3.14;
char : 문자 타입 (8비트)
char aCharacter = 'A';
NSString * : 문자열 객체
NSNumber * : 숫자 객체
NSArray * : 배열 객체
NSDictionary * : 딕셔너리 객체
NSData * : 바이트 데이터 객체
NSString *aString = @"Hello, Objective-C!";
NSNumber *aNumber = @123;
NSArray *anArray = @[@"Apple", @"Banana", @"Cherry"];
NSDictionary *aDictionary = @{@"Key1": @"Value1", @"Key2": @"Value2"};
NSData *aData = [NSData dataWithBytes:"Hello" length:5];
id : 어떠한 객체 타입이든지 받을 수 있는 범용 타입
SEL : 메소드 셀렉터를 나타내는 타입
BOOL : 논리형 타입 (YES 또는 NO 값을 가짐)
enum : 열거형을 정의하여 특정 상태나 값을 나타냄
// 열거형 예제
typedef enum {
Red,
Green,
Blue
} Color;
Color favoriteColor = Green;
프로그램이 조작할 수 있는 저장 영역에 부여된 이름
int age = 25;
float height = 5.9;
char initial = 'A';
int d = 3, f = 5;
프로그램이 실행 중에 변경할 수 없는 고정된 값
const 키워드를 사용해서 정의할 수 있다.
#define 지시어는 텍스트 치환 방식으로 상수를 정의하며, 타입 정보를 제공하지 않는다.
const int maxItems = 100;
#define PI 3.14159
NSString *const kDefaultGreeting = @"Hello, World!";