반응형
250x250
11-24 19:32
Today
Total
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Notice
Recent Posts
Recent Comments
Link
Archives
관리 메뉴

Bill Kim's Life...

[Swift] Swift5 vs Objective C : 문법적 차이 본문

CS(컴퓨터 과학)/Swift

[Swift] Swift5 vs Objective C : 문법적 차이

billnjoyce 2020. 6. 11. 12:02
728x90
반응형
Swift5와 Objective C와의 문법적 차이를 알아봅니다.

 

이번 글은 지난 글에 이어서 Swift5와 Objective C와의 문법적 차이에 대해서 살펴보겠습니다.

 

 

#. 필요 기본 지식

  • 기존에 iOS 개발에 대한 기초 지식이 있으신분
  • Objective C에 대해서 사용 경험이 있거나 개발을 많이 해보신분
  • Swift를 처음 진입하기전에 Objective C와의 문법적 차이를 알고 싶으신분

 

 


 

 

그럼 두 언어 간의 문법적 차이를 한번 살펴보겠습니다.

 

 

#1. 확장자

 

  • Swift :  .swift
  • Objective C : .h, .mm

 

 


 

 

 

#2. 파일 포함 방식

 

  • Swift :  import
import UIKit

 

  • Objective C : #import
#import UIKit

 

 

 


 

 

 

#3. 코딩 스타일

 

  • Swift :  모든 구문 뒤에 세미콜론 생략 가능, 조건문 등에서 ( ) 로 묶지 않아도 됨
  • Objective C : 모든 구문 사이에 [ ] 문자로 감쌈, 구문 끝에는 세미콜론 반드시 입력

 

 

 


 

 

 

#4. 동적 타입

 

  • Swift 
    • Any : 모든 변수 및 객체 지정 가능
    • AnyObject : 객체 타입에 지정 가능
  • Objective C
    • id : 모든 변수 및 객체에 지정 가능

 

 


 

 

 

#5. 자료형

 

  • Swift 
    • Bool : true, false 값을 처리, 0, 1로는 사용할 수 없음
    • Int : +, -, 0을 포함한 64비트 정수형 타입
    • UInt : 양수 정수형 타입, Int 타입 값을 넣을 수 없음
    • Float : 32비트 부동 소수형 타입, 정수값 입력 가능
    • Double : 64비트 부동 소수형 타입, 정수값 입력 가능
    • Character : 한 글자의 문자를 가지는 문자형 타입
    • String : 여러 문자를 가지는 문자형 타입
  • Objective C 
    • 기본적으로 C, C++ 형태의 자료형 사용 가능 
    • BOOL, bool : true, false 값을 위한 자료형, 0, 1을 사용할 수 있음
    • NSInterger : +, -, 0을 포함한 64비트 정수형 타입
    • NSUInterger : 양수 정수형 타입, Int 타입 값을 넣을 수 없음
    • CGFloat : 32비트 부동 소수형 타입, 정수값 입력 가능
    • double : 64비트 부동 소수형 타입, 정수값 입력 가능, Objective C 전용 자료형은 없음
    • char : 한 글자의 문자를 가지는 문자형 타입, Objective C 전용 자료형은 없음
    • NSString : 여러 문자를 가지는 문자형 타입

 

 


 

 

 

#6. 문자 처리

 

  • Swift 
String str = “abcd”

 

  • Objective C
NSString = @“abcd”

 

 

 


 

 

 

#7. 상수 및 변수

 

  • Swift :  let(상수), var(변수, 모든 자료형과 호환)
  • Objective C : const(상수), 변수는 기본 자료형으로 선언

 

 

 


 

 

 

#8. 컬렉션(Collection)

 

  • Swift 
    • Array : 순서가 있는 리스트 컬렉션, 배열과 비슷함, 중복값 허용
    • Dictionary : Key, Value로 이루어진 컬렉션, (해쉬)맵과 비슷한 형태로 키는 중복 허용 안하나 값은 중복 허용
    • Set : 순서가 없고 컬렉션 안의 멤버들이 각각 유일한 컬렉션, 중복 허용 안함, 집합 내의 빠르게 각 원소값을 확인할 때 유용
  • Objective C 
    • NSArray : 순서가 있는 리스트 컬렉션, 값 설정 이후 수정 불가
    • NSMutableArray : NSArray와 같은 리스트 컬렉션이나 값 설정 이후에도 수정 가능
    • NSDictionary : Key, Value로 이루어진 컬렉션, 키는 중복 허용 안하며 값은 중복 허용, 초기 설정 이후 수정 불가
    • NSMutableArray : NSDictionary와 마찬가지인 컬렉션으로 갑 설정 이후에도 수정이 가능한 타입
    • NSSet : 순서가 없고 컬렉션 안의 멤버들이 각각 유일한 컬렉션 중복 허용 안함, 집합 내의 빠르게 각 원소값을 확인할 때 유용, 초기 설정 이후에 수정 불가
    • NSMutableSet : NSSet과 같은 컬렉션으로서 초기 설정 이후에도 수정이 가능한 타입

 

 


 

 

 

#9. 조건문

 

  • Swift
    • if : () 안에 조건문을 표현할 수도 있고 생략하여도 무방, && 연산자 대신에 , 로 나열 가능, 반드시 { } 로 조건문을 감싸야 한다.
    • guard : if와 비슷한 조건문이지만 else 구문이 반드시 필요하며 참일 경우에는 실행 코드 블럭이 없아. guard는 다양한 용도로 활용할 수 있으며 해당 내용은 추후 다른 강좌로 소개할 예정
    • Switch : 기존 switch 문과 유사하며 case, default 형식으로 조건 검사, case 문서에 조건(case let(x, y)) 및 범위(case (-3...3))로도 분기 처리 가능
  • Objective C
    • if : () 안에 조건문 표기, 한 줄일 경우 { }  생략 가능
    • Switch : 기존 C의 switch문과 유사하며 case, dafault 형식으로 조건 검사

 

 


 

 

 

#10. 반복문

 

  • Swift 
for 루프 상수 in 루프 구간(조건) {
   [코드]
}

루프 순회 표현은 0..2 형식으로 범위 지정이 가능하며 Swift5에서는 기존 C 스타일의 For문 형식은 사용 불가

 

while 루프 조건 {
   [코드]
}

 

  • Objective C
for(int i = 0; i < 10; i++)
{
   [코드]
}

for(루프 상수 : 콜렉션 객체) {
   [코드]
}

기존 C 스타일의 For문 구문 사용 가능, 콜렉션 타입의 경우도 다음고 같이 사용 가능

 

while(루프 조건) {
   [코드]
}

 

 

 


 

 

 

#11. 함수

 

  • Swift
public func name(name:String) -> String(반환값)
{
	return name
}

 

  • Objective C
-(NSString *)name:(NSString *)name
{
	return  name;
}

 

 

 


 

 

 

#12. 구조체

 

  • Swift :  기본적인 문법 형태를 비슷함, 여러 변수를 담을 수 있는 컨테이너, 프로퍼티, 메서드 사용 가능, Extension 및 프로토콜 사용 가능, Subscript(특정 멤버 변수 등을 [0]의 형태로 접근할 수 있는 문법) 사용이 가능, 값 타입의 자료형, 상속 불가
  • Objective C : 기존 C 스타일의 구조체 사용과 거의 동일하다. 멤버 및 함수 선언 가능

 

 


 

 

 

#13. 클래스

 

  • Swift : 구조체와 비슷한 하나의 객체를 표현하는 단위, 참조 타입의 자료형, 상속이 가능하며 클래스 인스턴스에 대한 타입 캐스팅 및 디이니셜라이저 지원, ARC 기본 지원
  • Objective C : Swift 클래스와 비슷한 형태로서 객체를 표현하는 단위, 기본적으로 NSObject 객체를 상속할 경우 ARC를 자동으로 사용 가능

 

 


 

 

 

#14. enum

 

  • Swift
enum Number {
	case one
	case two
	case three
}

 

  • Objective C 
enum  Number {
	one = 1,
	two = 2,
	three = 3
};

 

 

 

 

 


 

 

지금까지 Swift와 Objective C 간의 문법적인 부분에 대해서 간략하게 살펴보았습니다.

 

그럼 오늘 하루도 모두들 행복한 하루 되세요. ^^

 

 

 

감사합니다.

 

 

 

www.slideshare.net/BillKim8/swift5-vs-objective-c

 

Swift5 vs objective c

Swift5 와 Objective C와의 비교에 대한 강의 자료입니다.

www.slideshare.net

 

728x90
반응형
Comments