본문 바로가기
ETC./기타

기타) Objective-C VS Swift 어떤 차이가 있을까??

by 후르륵짭짭 2021. 1. 18.
728x90
반응형

 

안녕하세요 후르륵짭짭 입니다.

이번에는 Swift와 Objective-C의 차이점을 다뤄 보도록 하겠습니다.

평소에 Objective - C와 Swift의 차이에 대해서 호기심이 많았습니다.

그래서 최근 몇일 동안 Objective-C로 간단한 앱도 만들어보고 간단한 문법 강의를 보면서

어떤 차이가 있는지 체험 해봤습니다.

 

** Objective - C와 Swift의 차이**

 - Header와 Implementation 의 존재 여부 -

일단 Objective - C 언어로 IOS 개발 프로젝트를 실행 시키면 아래 사진 처럼 ".h" 파일과 ".m" 파일이 있습니다.

반면에 Swift는 아래 처럼 그냥 ".swift" 파일 하나로 구성 되어 있습니다.

Objective - C에서 ".h"는 Header 파일 이라 불리고 ".m"은 Implementation 파일이라 불립니다.

헤더 파일에서는 함수의 정의나 프로퍼티의 특징 들을 정의 해주는 곳이라면

수행 파일에서는 정의 된 함수를 구체적 기능을 적는 공간 입니다.

그런데 Swift는 그런거 없이 헤더 파일과 수행 파일이 함께 되어 있어서 더욱 개발하기 편합니다.

 

- 포인터 사용 및 타입 유추 -

Objective - C와 Swift는 포인터 사용 빈도수가 많이 차이 납니다.

Objectivc - C는 클래스를 사용할 때 포인터를 반드시 사용해줘야합니다.

반면에 일반적인 int, double, float와 같은 자료형은 포인터를 필요로 하지 않습니다.

이렇게 NSString와 NSNumber는 클래스이기 때문에 포인터를 사용해서 변수(프로퍼티)를 만들어 줬습니다.

그러나 Swift는 Objective - C와 다르게, 포인터를 사용하지 않습니다.

따라서 개발자가 포인터를 신경 쓰지 않고 개발 할 수 있습니다.

포인터를 신경 써서 개발한다는 것은 메모리를 언제 할당하고 언제 해제하는지에 대해 신경 써야한다는 말입니다.

 

뿐만 아니라 Objective C 는 타입을 명확하게 해줘야합니다.

Swift에서는 타입을 유추 할 수 있지만 Objc는 그렇지 못 합니다.

따라서 Swift는 개발을 좀 더 쉽게 할 수 있습니다.

 

- 메소드 호출 방법 -

위에 이미지를 보면 setQRCodeVC가 함수인 것을 알 수 있습니다.

그런데 Swift 였으면 setQRCodeVC() 이렇게 호출 해주면 되는 것을 []를 쳐서 호출 하고 있습니다.

이렇게 함수 호출 방법이 다릅니다.

( 참고로 Objc에서 []를 클래스 내부의 함수나 변수 들을 호출 할 때 사용하는 것 입니다.]

 

- 앱 라이프 사이클 -

일단 Swift는 앱의 실행을 아래 사진을 보면 알 듯이 AppDelegate에 @main 함수로 부터 실행이 됩니다.

그러니깐 앱이 실행 되면 main에서 부터 실행이 되고 그 후에 AppDelegate를 수행 시킵니다.

그리고 우리는 @main 함수를 뜯거나 볼 수 없습니다.

결국 AppDelegate에 main 함수가 있다고 볼 수 있습니다.

반면에 Objc에서는 main() 함수가 따로 있습니다. (C언어 형태를 가져왔다는 것을 알 수 있습니다.)

그리고 마지막에 리턴 값이 UIApplicationMain 입니다.

정리하면 Swift는 UIApplicationMain이 AppDelegate와 같이 있는 반면에 

Objective C는 main 함수가 따로 있고 이 main 함수를 시작으로 UIApplicationMain이 수행이 되고 그 후에 AppDelegate가

수행 되는 것을 알 수 있습니다.

 

참고 사이트 : 

dev.to/nancy07/swift-vs-objective-c-which-is-the-best-for-iphone-app-development-chn

 

Swift vs Objective-C: Which is the Best for iPhone App Development?

The iOS written in Obejective C and Swift programming language. Swift code has gained immense importance in the recent past as it has better compilers which makes for a fast and better coding experience for iOS programmers. Swift is also very easy to learn

dev.to

 

728x90
반응형

댓글