개발자 블로그

Xocde9, swift4 업데이트 후기 본문

프로그래밍/iOS-SWIFT

Xocde9, swift4 업데이트 후기

로이드.Roid 2017. 11. 8. 15:52

업데이트 한지는 한참 지났는데.. 이제서야 쓴다. 처음 아이폰 앱 개발을 시작했을 때의 개발환경은 Xcode8, swift3였다. iOS11 출시와 함께 xcode9, swift4가 정식으로 출시 되었고, 최근에 앱을 업데이트 하면서 Xcode와 swift 언어도 업데이트 해보았다.

사실 뭐 인터넷으로 자료를 찾아볼 때 이미 swift 버전이 올라갈 때 마다 문법도 굉장히 달라진다는건 알고 있던터라 여기저기서 에러를 뿜어댈거라는건 미리 예상하고 있었다. 그리고 xcode 버전업은 이번이 처음이긴하지만, Android studio에서 당했던(?)걸 생각해보면 이거 역시 깔끔하게 돌아갈거라고는 생각하지 않았고, 불행히도 예상은 적중했다.

일단 xode9과 swift4의 일반적인 변경 사항은 아래 링크와 영상을 참조하면 될 것 같다. 난 그냥 내가 겪은 내용 위주로 작성하려고 한다. 업데이트 후 겪은 문제해결이 주요 내용이 될 것 같다.


Xcode9의 변경 사항


swift4 언어의 변경 사항

http://blog.yagom.net/568




참고로 이 글의 작성 기준이 된 Xcode의 정확한 버전은 9.0.1이다. 최근에 9.1 버전이 출시되었는데 아래 본문에서 설명하는 내용들이 모두 해결되었는지는 모르겠다.


일단 툴에서 자동으로 변환을 해주는 것 같긴한데, 완전하지는 않았다. 주요 변경 사항은 아래 내용 정도. 

프로그램에 따라 이 부분은 뭐 다양하겠지만 일단 내 경우에는 주요 변경 코드들이 다 저런 부분이었다. 

텍스트 속성을 지정하는 코드가 기존에는 String 타입이었는데 이게 NSAttributedStringKey 타입으로 변경되었다. 기존 보다 더 사용하기 쉽게 변경된 것 같다.

그리고 #selector로 사용되는 함수에 이제는 "@objc"라고 명시적으로 선언해줘야 된다. 

그리고 내 코드에서는 사용되지 않았지만, """을 이용한 여러줄 문자열 같은 부분도 마음에 드는 개선사항이다.

처음에는 꽤 많은 에러를 뱉을 줄 알았는데 생각보다 변환은 깔끔했다. 


여기부터는 아마도 xcode를 업데이트해서 발생한 문제들인 것 같다. 

1. 코드 편집할 때 마다 storyboard를 빌드하는 문제

xcode8 사용할 때는 발생하지 않았던 문제인데, 이미 이런 문제를 겪었던 사람도 있는 것 같다. 스토리보드를 편집하는게 아니고, 소스 코드를 수정하는데도 계속해서 storyboard를 빌드해서 도저히 코딩을 할 수 없게 만드는 문제다. 심지어 주석을 입력할 때도 같은 문제가 생긴다. 

해결은 간단하다. 

메뉴에서 [Editor] > [Automatically Refresh Views] 옵션을 체크 해제 해주면 된다. 리프레쉬가 필요할 때는 해당 항목 바로 밑에 있는 [Refresh All Views]를 사용하면 된다.

사양이 낮은 개발장비를 사용하는 사람들은 [Automatically Refresh Views] 옵션을 끄는게 좋을 것 같다. 뭔가 툴이 좀 더 빠릿빠릿 해진다는게 체감이 된다.

더 자세한 내용은 여기를 참조.


2. storyboard를 통한 폰트 적용이 안되는 문제

참 희안한 문제였다. 화면은 위 이미지처럼 구성되어있고, static cell로 만들었다. 폰트도 storyboard를 이용해서 각 레이블마다 지정을 해줬고. 

근데 실행을 시키면 제일 위에 있는 폰트 - 여기서는 나눔손글씨 펜 - 로 모든 레이블의 폰트가 적용된다. "나눔손글씨 펜"의 폰트를 디폴트로 하면, 다시 나눔스퀘어로 모든 레이블의 폰트가 적용되고..-_-;;

이건 그냥 스토리보드에서 폰트를 지정하는 대신에 런타임에 코드로 폰트를 적용해줬다. 기분탓일 수도 있는데 스토리보드에서 폰트를 그냥 디폴트로 돌렸더니 조금 더 빨리 열리는 것 같기도 하고.. 뭐 그렇다.


3. iTunes Connect 빌드 업로드 문제

제일 짜증났던 문제. 앱 수정 다 끝내고 iTunes Connect로 빌드를 업로드 하려고 했는데 발생한 문제다. 

화면 캡처를 안해놔서 비슷한 이미지를 주워왔다. xode8에서는 문제가 없었는데, xcode9으로 업데이트 한 뒤로 계속해서 사용하던 Provisioning Profile를 사용할 수 없었다.

에러 메시지는 "profile is not manually managed" 대충 이랬던 것 같다.

설정에 문제가 있는건가 하고 한참을 삽질했는데.. 어이없게도 프로파일 이름이 문제였다. "Apple Developer"에 가서 Distribution용 Provisioning Profile의 이름을 확인해보자. 아마 "XC iOS"라는 텍스트가 포함되어있을 것이다. 

이 "XC iOS"라는 텍스트를 지워주면 된다. 즉, 그냥 이름을 변경해주면 된다는 소리. 

더 자세한 내용은 여기를 참조. 


일단 기억나는 몇 가지 내용들을 써봤다. 어쩌면 더 있는데 그냥 그 때 그 때 해결해서 넘어간 것들이 있을수도 있고. 까먹기 전에 진작에 기록을 해야 되는데.. 할 일이 많아서,, 라고 변명을 해본다. 진짜 하루에 하나씩 꾸준히 포스팅 한다는게 얼마나 대단한 일인건지 다시금 깨닫게 된다.


Comments