1. 구조
.h 파일 -> 선언(헤더파일) @interface
.m 파일 -> 구현(소스파일) @inplementation
최상위 클래스 NSObject 상속
2. 타입추론 불가능, 세미콜론 필수
var str: String = "안녕하세요"
NSString *str = @"안녕하세요";
변수 명 앞에 포인터 * 붙여줘야하며, 데이터 앞 @ 붙여줘야함
3. 로그
var num = 24
print("오늘의 간식은 \(num)개 입니다.")
NSNumber *num = @24;
NSLog(@"오늘의 간식은 %d개 입니다", num)
4. 클래스 선언
Class Player {
}
//헤더(선언)
@interface Player: NSObject
@End
//소스(구현)
@implementation Player
@end
5. 상속
Extension vs Category
(swift) Extension: 기존 객체 직접 확장. 클래스, 구조체, 프로토콜 등 대부분 객체에 적용가능
(objective-c) Category: 상속 대신 기존 객체 자체를 확장. 클래스 객체만 확장 가능
6. 범용 타입
Any(AnyObject) vs id
(swift) Any: 구조체, 클래스, 열거형, 함수 등 스위프트에서 제공하는 모든 타입의 값을 저장
(objective-c) id: 모든 파입의 데이터를 저장할 수 있을 뿐만 아니라, 호환성만 보장된다면 타입 변환할 수 있는 특성이 있다. 코코아 프레임워크나 코코아 터치 프레임워크에서는 범용 타입을 이용한 API 많음
7. 메소드 호출
// swift
인스턴스.call(3)
// objective-c
[ 인스턴스 call : 3 ]
메소드 호출 대신 객체에 메세지를 보냄.
공백필요(?)
8. swift와 다르게 NULL 상수 있음
9. 포인터
객체는 무조건 포인터, 외는 c랑 거의 똑같음
@property (nonatomic, assign) int myAge;
@property (nonatomic, retain) NSString *myName;
@property (nonatomic, retain) NSString *mySubject;
예를 들어 다음과 같이 선언했을 때, int는 기본 타입형이고, NSString은 Objective-c의 클래스이기 때문에 *가 무조건 붙는다.
10. 객체지향 타입
swift는 클래스, 구조체, 열거형 모두 제공하는 반면 objective-c는 클래스만 제공
-> ??? 옵젝씨도 구조체 있음
11. 익명 함수
swift는 클로저, objective-c는 블록 개념으로 익명함수 표현 가능
^ 연산자를 사용해서 시작을 나타냄
'PROGRAMMING CODE > SWIFT' 카테고리의 다른 글
[Objective-C] 함수 (0) | 2024.06.10 |
---|---|
[코테 필수 알고리즘] 코테 4시간 전 벼락치기 ^.^ (1) | 2024.05.20 |
[swift] 소켓통신 socket.io 사용해보기 (0) | 2024.05.07 |
[KakaoMapSDK_ver2 iOS] 2.10.x 업데이트 엔진 발전, 버전 설정 팁 (0) | 2024.04.26 |
[tuist] There is no XCFramework found at 오류 해결(Xcode SPM) (0) | 2024.04.01 |