[iOS] Swift vs. Objective-C
-
결론적으로 이 글은 Swift 가 더 좋음을 강조
-
Swift 는 더 읽기 쉽다.
Objective-C 는 기본적으로 C 베이스로 발전한 것이기 때문에 C 에서 예약한 keyword 를 사용할 수 없다.
그래서 @ 를 이용한 keyword 를 사용하는데 가독성이 그리 좋지 않다.
Swift 는 위의 @ keyword 관련 문제 뿐만 아니라
statement 마지막의 세미콜론이 없어도 되고, conditional expression 에 ( ) 도 없어도 되는 등 오래된 필요없는 코드관습을 따르지 않아도 된다.
게다가 가독성에 엄청난 영향을 끼치는 [[[ ]]] 과 같은 문법을 사용하지 않아도 된다.
-> 다른 언어와 같이 , 로 구분된 param 전달방법을 사용한다.
Swift 는 보다 더 자연스러운 영어에 가깝다.
-
Swift 는 유지보수에 더 좋다.
Objective-C 는 C 로부터 발전한 것이기 때문에 C 의 발전없이는 Objective-C 의 발전도 어렵다.
우선 C 는 header 와 implementation 이라는 .h, .m 두 개의 파일로 분리된다.
이렇게 2개의 파일 분리는 rename 등에서 sync 를 맞춰주어야 하는 추가 수고가 든다.
swift 는 2개의 파일 분리를 버렸다.
한 개의 파일로 유지보수가 가능하다.
그 외에도 많은 boilerplate 코드등을 사용하지 않아도 되고, 유지보수가 측면에서 기능향상이 있었다.
-
Swift 는 더 안전하다.
Objective-C 는 nil 에 대한 어떠한 operation 을 했을 때 no-op 으로 아무 동작을 하지 않고 무시된다.
이런 경우 crash 는 피할 수 있지만 버그를 찾기 어렵고, 그래서 많은 resource 를 사용하게 된다.
-
Swift 는 memory 관리가 더 좋다.
Objective-C 는 C level 에서는 ARC 가 제대로 동작하지 않는다. ( 예를 들면 Core Graphics API )
오직 Cocoa API 와 object-oriented code 들에서만 동작한다.
그러나 Swift 에서는 C level 까지 ARC 가 자동 작동된다.
Swift 와 Objective-C 의 비교는 아니지만,
iOS 자체가 GC 가 없기 때문에 성능의 이점이 많다는 것은 둘의 공통된 장점!!
( Java, C#, Go 등은 GC 가 있어 mobile 환경에 단점으로 작용한다. )
-
Swift 는 더 적은 코드를 작성한다.
Objective-C 는 string concat 만 하려고 해도 엄청 장황한 코드를 작성해야 한다.
그러나 Swift 에서는 요즘 프로그래밍 언어의 + 특성을 그대로 받아들여 쉽게 string concat 이 된다.
Swift 는 %s, %d, %@ 와 같은 comma 로 구분된 token 들을 사용하지 않아도 된다.
그래서 유지보수도 훨씬 좋다.
-
Swift 는 더 빠르다.
Apple 이 앞으로 미는 언어가 Swift 때문인지
Swift 는 C++ 에 필적하는 성능을 보인다는 벤치마킹 결과가 있다.
Objective-C 는 기본적으로 매우 느린 언어이다.
-
Swift 는 Open source 와 name conflict 가 적다.
Objective-C 에는 namespace 의 개념이 없다.
오직 Class 이름에 접두어를 붙인다던지.. 이런 행위를 namespace 로 활용한다.
그래서 open source 와 name conflict 가 잘 발생한다.
그러나 Swift 는 namespace 개념이 있어서 이런것들을 방지할 수 있다.
NSArray, NSDictionary 등과 같이 NS 접두어 쓰던것도 간단히 Array, Dictionary 로 사용할 수 있다.
Swift 의 namespace 는 file 에 속한다.
-
Swift 는 dynamic library 를 제공한다.
dynamic library 는 static library 에 비해 많은 장점들이 있다.
library 들의 진화가 빠르다는 장점도 있고, app 의 설치파일 자체도 용량이 작아질 수 있다.
dynamic library 는 모바일 환경에서 매우 적합하다.
OS X 에서는 dynamic library 가 이전부터 제공되었지만,
iOS 에서는 Swift & iOS 8 부터 가능하다.
더 이상 iOS 의 한단계 버전 release 가 아닌 minor patch 등으로 library 를 쉽게 update 할 수 있다.
-
Swift Playground 가 코드의 전반적은 측면을 향상시킨다
Swift Playground 는 iPhone app 을 만들지 않고도 5~20줄정도의 간단한 코드를 테스트 할 수 있게 해준다.
이런 chunk test 는 프로젝트를 만들어 테스트하는 그런 수고들을 없애기 때문에 많은 빠른 테스트와 검증을 하기 쉽다.
-
Swift 는 당신이 영향을 끼칠 수 있는 미래다.
Swift 가 등장함에 따라 Objective-C 는 더 이상 크게 발전하지 않을 것이다.
Swift 의 개발 커뮤니티는 더 활성화 될 것이다.
정리
Swift 는 더 접근성 좋은 더 기능을 잘 갖춘 언어이다.
Swift 는 C 와 같은 오래된 언어를 바탕으로 발전한 Objective-C 와는 근본이 다르다.
Objective-C libary 를 확 버리지는 않겠지만 앞으로 등장하는 많은 API 들은 swift 가 기반이 되는 것일 것이다.
Swift 는 더 적은 코드로 더 적은 파일로 유지보수를 할 수 있다.
더더욱 business logic 에 focus 를 할 수 있다.
Swift 는 코드 자체가 documenting 을 하는 능력이 충분하다.
Swift 는 ARC 가 C-style code 에도 적용이 된다.
기타 등등...
'프로그래밍 놀이터 > iOS' 카테고리의 다른 글
[Effective Objective-C] #29 참조 세기를 이해하라 (0) | 2017.09.22 |
---|---|
[iOS] Swift 는 어떻게 Objective-C 보다 훨씬 빠른가? (0) | 2017.09.14 |
[Effective Objective-C] #28 프로토콜을 이용해 익명 객체를 제공하라. (0) | 2017.09.12 |
[Effective Objective-C] #27 클래스 확장 카테고리를 이용해 상세한 구현을 숨기라. (0) | 2017.09.11 |
[Effective Objective-C] #26 카테고리에는 프로퍼티를 사용하지 말라. (0) | 2017.09.10 |
댓글