[Swift OSX] 1. 개발 준비

 

작성일 기준 최신 Xcode와 Swift버전을 사용하였습니다.

1. 개발 준비

MAC OS 개발도 IOS개발과 마찬가지로 맥(맥북)에서만 개발이 가능합니다.(윈도우, 리눅스 환경에서는 불가능~!)

 

맥에서 개발을 시작하면 먼저 Xcode라는 녀석이 필요합니다. App Store에 들어가셔서 설치해주세요.

 

설치가 끝나셨다면 아래와 같은 과정으로 이동해주세요.

 

 

[Create a new Xcode project] 클릭

 

[macOS -> Cocoa App -> Next] 클릭

 

[Product Name, Language=Swift, Use Storyboards 채크 -> Next] 클릭

 

 

위와 같이 프로젝트를 생성해주면 기본적인 세팅은 끝입니다.

 

다음은 화면 구성입니다.

 

Xcode 화면 구성

위와 같이 Xcode는 3가지 부분으로 나눠지게 됩니다.

(Inspector 영역은 Utilites 영역이라고 불리는 경우도 있습니다.)

 

Library는 화면 구성에 필요한 다양한 아이템들을 불러올 수 있습니다.

 

시작버튼 클릭시 실행화면

프로젝트 생성 후 바로 실행 버튼을 클릭하면 위와 같이 아무것도 없는 빈 화면이 실행되는 것을 볼 수 있습니다.

 

여기까지 완료되면, 개발 준비는 일단 끝이라고 볼 수 있습니다.

 

다음으로는 간단한 UI 구성에 대해서 알아보겠습니다.

 

 

Xcode 정말 편하게 만들려고 노력했지만, 불편한 프로그램이 아닐 수 없습니다...

제작자의 의도를 벗어난 다양한 버그들이 힘들게 하는 프로그램이죠... ㅠㅠ

[Swift OSX] 0. Swift로 시작하는 OSX 프로그래밍

Swift x OSX


1. 소개

2014년 Swift가 첫 공개되고 5년이라는 시간이 흘렀다. 기존 Objective-C보다 1.5배, Python보다 220배의 빠른 처리속도를 갖고있다고 소개된 이 언어는 애플이 Objective-C를 점점 등한시하고, Swift를 밀면서 많은 IOS개발자들이 Swift로 점차 이동하게하는 모습을 보이게되었다.

하지만, 국내의 경우 OSX에 대해서는 조금 상황이 애매하다.

MAC OS를 사용하는 유저의 수가 이전에 비해서 많이 늘었다고는 하지만, 윈도우에 비하여 압도적으로 적은 상황이다보니 대부분의 개발자들이 굳이 MAC OS를 위해서 개발을 별도로하는 경우가 적은 것 같다.

필요에 따라서 간단한 매크로 프로그램등을 만드는 경우는 있지만, 이러한 프로그램들을 위해서 Swift를 배울 필요는 없다. (Objective-C 조차 필요없는 경우도 많다.)


이러한 이유 때문인지 Swift + IOS에 관련된 강의들은 쉽게 찾아볼 수 있는 반면에, Swift + OSX에 관련된 내용은 해외사이트에 의존할 수 밖에 없는 상황이다.


이제부터 시작될 내용들 역시 99% 해외 사이트에서 얻어온 내용을 번역 & 정리한 내용이 될 것이며, 이들 내용들을 이용하여 간단한 OSX 앱개발을 수행할 예정이다.





꾸벅

[Swift 입문] 접근제어자


1. 접근제어

접근제어는 앱개발 뿐만 아니라, 프로그래밍에 있어서 기본이 되는 부분입니다.
특히, 내가만든 프로그램을 남들에게 공유하겠다는 목표를 갖고있다면, 필수적인 요소이죠.

접근제어는 프레임워크나 클래스등에서 꼭 필요한 부분만을 외부로 공개한다는 것이 핵심입니다.

다시말해 외부 접근자는 프레임워크나 클래스의 접근에 있어서 필요한 부분만을 보기 때문에 더욱 쉽고 올바르게 접근할 수 있고, 내부 설계자는 외부로 노출하기 꺼려되는 정보를 차단할 수 있다는 장점이 있습니다.

접근 수준

내부 접근여부

외부 접근여부

open

접근가능 (O)

접근가능 (O)

public 

접근가능 (O)

접근가능 (X)

internal (기본값 )

접근가능 (O)

접근불가 (X)

fileprivate 

같은 파일 내 접근가능 (X)

접근불가 (X)

private

접근불가 (X)

접근불가 (X)

( O, X 는 상속 및 Override의 가능 여부 )



2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 8. Swift 함수 정의하기

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) 줄바꿈 없는 print

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) Call by reference ( 참조에 의한 전달 )

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 9. Class 만들기 (생성, 상속)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 10. 열거형 Enum


[Swift 입문] 열거형(Enumeration) 사용하기


사실 남들이 짜둔 C코드에서 열거형을 많이 보았지만, 제대로 사용해본적이 없습니다...

아직 미숙한점이 많다는 것을 느끼는 부분이네요... ㅠㅠ


1. 열거형 만들기

열거형은 새로운 자료형을 선언해준다고 생각하시면 좋을꺼같습니다.



간단하쥬?


2. RawValue

아래와같이 열거형에 값을 넣어주는 것도 가능합니다.

그리고 이 값은 rawValue를 통해서 확인이 가능합니다.

Int형 뿐만 아니라 원하는 자료형으로 쓸 수 있으니, 잘만 쓴다면 편하겠죠?



2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 8. Swift 함수 정의하기

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) 줄바꿈 없는 print

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) Call by reference ( 참조에 의한 전달 )

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 9. Class 만들기 (생성, 상속)


[Swift 입문] Class 만들고 사용해보기


Swift는 볼수록 조금 규칙이 엄격한 파이썬이라는 느낌이 있네요. 

1. Class 만들기

Class를 표현할 때, 많이 사용되는 표현이 제품의 '틀'이라는 말을 씁니다.

예를들어 자동차의 번호판을 만드는 공장이 있다면, 여기서 class는 철판에 번호를 찍고 색을 입히는 기계일 뿐이지 번호판이 아닙니다.

번호판을 만들기전에, 용도에 따라 번호판의 색은 어떤것으로 할지, 숫자는 어떤게 들어가고, 문자는 어떤게 들어갈지 미리 전해서 번호판을 만드는 기계(Class)에 알려줍니다. 그 과정이 아래에 init이라는 함수로 초기값을 설정해 주는 부분이라고 할 수 있습니다.

그리고 class가 만들어낸 결과물이 아래에서 my_car1, my_car2라는 부분으로, 이게 하나의 번호판이 되는거겠죠.

죄송합니다. 설명은 번호판, 실제 코드는 자동차라니... ㅠㅠ



위에서 이런저런말을 하는 이유는 Car라는 클래스는 Car.id와 같은 방법으로 불러와서 값을 확인하는 용도가 아니라는 것을 말씀드리고 싶었기 때문입니다.


번호판을 만드는 기계가 어떻게 생겼는지가 뭐가 중요할까요? 우리는 만들어질, 그리고 만들어진 번호판에만 집중하도록 합시다.



2. 클래스의 상속

처음 자바라는 언어에서 상속을 봤을 때, 멘붕했던 기억이 나네요...

상속은 기존에 존재했던 클래스를 가져와서 새로운 기능을 추가하거나 기존의 내용을 수정하여 사용하는 방식이라고 생각하면 좋을꺼 같습니다.


위 코드에대해서 간단하게 설명하자면 아래와 같습니다.


부모클래스 : Game

자식클래스 : Phone_game

override : 부모 클래스에서 정의된 내용을 수정

super : 부모 클래스에서 사용된 변수를 의미


지금 눈으로 볼때 쓸때없어보이고 어렵기만 할 수 있지만, 코드를 예쁘게 짜기 위해서는 필수이니 꼭 기억해두고 응용합시다.



 추가) 구조체와의 큰 차이

구조체와 다르게 class는 객체를 참조하는 형태입니다. 클래스에 의해 만들어진 어떤 변수는 해당 객체의 주소값을 갖고있습니다.

따라서 
let car1 = Car()

let car2 = car1

과 같은 경우 car2와 car1는 동일한 객체를 참조합니다.


즉, car1의 내용을 변경하면 car2도 변경된다는 의미입니다.

추가) 소멸자

소멸자는 "deinit"를 사용합니다.

class가 역할을 다하고 메모리에서 사라질 때 수행됩니다.



2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 8. Swift 함수 정의하기

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) 줄바꿈 없는 print

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) Call by reference ( 참조에 의한 전달 )


[Swift 입문] 함수에서의 Call By Reference


Call by Reference란?

어떤 변수 X를 함수의 인자로 전달할 때, 실제로 X라는 변수가 함수의 인자가 되는 것인지 아니면 X=10이라고 할 때 10이라는 값이 복사되어 전달되는 것인지에 따라 결정된다.

Call by Reference -> 다른말로 참조에 의한 전달이라고 하는 이것은, 전자와 같이 실제 X라는 값이 존재하는 데이터의 메모리상의 주소값을 함수의 인자로 전달함을 의미한다.


즉, 함수에서 인자로 전달받은 값을 수정할 경우 실제 X라는 값이 변경된다는 의미이다.


(위에서 말했던 경우 중 후자에 해당하는 값의 복사는 Call By Value라고 부른다.)



무슨말인가? 아래의 경우를 보자.




위와같이 x라는 변수가 5라는 값을 갖고있을 때, 함수에서 해당 값을 변경하려고하면, 애러가 발생하는것을 볼 수 있다.


애러 원인은 num이라는 매개변수로 들어온 값은 let(==상수) 이므로 변경이 불가능하다는 이야기다.


그럼 어떻게 실제값을 변경할 수 있을까?


아래와 같이 inout 키워드와 '&'을 이용하면 해결이 가능하다.





우측에 변수 값을 보게되면, 5였던 값이 10으로 변경된 것을 볼 수 있다.


함수에 'inout' 키워드를 넣고, 인자를 전달할 때, x앞에 '&'을 붙여줌으로 해당 문제를 해결했다.


변수에 '&'를 붙여준다는 것은 x라는 값이 저장되어있는 메모리의 주소를 함수에 전달해 준다는 의미이다.


지금 이해하기 어렵다면, 일단 넘어가도 좋을듯하다.


2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 8. Swift 함수 정의하기

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) 줄바꿈 없는 print


[Swift 입문] print함수 사용시 자동 줄바꿈 사용안하기


C, C++ 등의 언어들과 다르게 파이썬, Swift와 같은 언어들은 출력함수인 print 함수를 사용할 경우 자동으로 줄바꿈을 수행합니다.

줄바꿈을 해서는 안될 경우 어떻게 해야할까?



머신러닝을 공부하면서 매일 사용하는 단축키 [ Shift + Tab ]은 사용하고자하는 함수의 설명을 보여주는 명령입니다.

swift에서는 [ Option + 궁금한 함수 클릭 ]을 통해서 위와같은 기능을 확인할 수 있습니다.

print함수를 Option버튼을 누르고 클릭하면 아래와 같은 화면을 볼 수 있습니다.



내용을 보면, print라는 함수는 출력을 원하는 값 [items 라는 것 외에도 separator와 terminator라는 인자를 입력받는 것을 볼 수 있습니다.


그리고 이때 두 인자의 기본값은 default라는 것으로 채워져 있습니다.


아래로 좀더 내려보니 terminator에 대한 예문도 있네요.




친절하게 적혀있는 예문들으보니 [ Separator ] 라는 녀석은 여러개의 출력값 사이에 들어가는 값이라는 것을 알 수 있고, [ terminator ] 라는 녀석은 출력 후 마침을 어떻게 할 것인지에 대한 정의임을 알 수 있었습니다.


terminator의 기본값이 "\n"이었나 보네요.



결과적으로 print("출력값", terminator: "")라고하면 자동 줄바꿈을 막을 수 있겠습니다.


2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 8. Swift 함수 정의하기


[Swift 입문] Swift에서 함수를 정의하기


1. 함수 기본 정의

Swift에서는 func [함수명](전달인자 정의) -> 리턴값 { 함수내용 } 형태로 함수를 정의합니다.



위에 보시는 것처럼 함수를 정의하고 사용합니다.


특이하게도 정의한 함수를 불러와 사용하는데 있어서도 어떤 인자에 값을 넘겨 줄 것인지 명시해야한다는게 특징일 수 있겠네요.


흠... 불편한데? 라고 생각할 수 있습니다.


그래서 생략을 하는 방법이 있습니다.



이렇게 앞에 '_'(언더바)를 넣어주면 됩니다.


2. 함수 인자의 default 설정


Swift에서도 다른 언어와 마찬가지로 인자의 Default 값을 설정할 수 있습니다.




3. 여러개의 값을 인자로 넘기는 경우

함수의 인자로 넘어오는 값의 크기를 알 수 없는 경우가 있을 수 있습니다.

그럼 아래와 같이 넘어오는 인자의 타입 뒤에 [ ... ]을 붙여줘서 해결이 가능합니다.


위 그림에서 name은 한번은 3개의 값을, 다른 한번은 1개의 값을 얻습니다.


hi 함수는 name이라는 인자를 처리할 때 개수에 상관없이 하나의 배열의 값처럼 사용하는 것을 볼 수 있습니다.



일단 이정도로 함수 선언에 대한 부분은 마치겠습니다.


다음에는 Swift에서 사용하는 기본적인 함수들에 대해서 작성해보도록 하겠습니다.



2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)


[Swift 입문] Swift 기본 문법 알아보기 2탄


1. 배열( Array )

C언어 보다는 파이썬을 많이 닮은 친구입니다.


선언의 방식은 다양하지만, 전부 Array형태로 선언되었다는 것을 알 수 있습니다.


파이썬을 해보신 분이라면 '어?' 하실 수 있습니다. ( 저작권 흠... )


다만, 사용하는 함수들이 조금 다릅니다. 물론 같은것도 많이 있습니다.


기능적으로는 거의 구현되어 있기 때문에 아래처럼 ' . '을 붙여보시면 많은 것들을 볼 수 있고, 한번씩 수행해보시면서 익히면 될 듯합니다.




2. 딕셔너리( Dictionary )

이건 Array보다 심합니다. 파이썬 dict랑 똑같거든요...


차이점이라면, 파이썬은 { ~~~ } 였다면, Swift는 [ ~~~ ]라는 것... ( 흠... )



사용하다보니 파이썬과는 조금 차이가 있다는 것을 느낄 수 있었는데, 현재 언급할껀 아닌거 같습니다.


참고로 위의 Array도 그렇고 Dictionary도 마찬가지인데, C언어처럼 메모리에 한줄로 데이터를 이쁘게 정렬하지 않습니다.


이건 파이썬에서 보여지는 특징인데, 예를들어 Array로 선언된 변수가 있다면, 변수에 저장되는 것은 각 인덱스들에 저장된 데이터의 주소값을 갖고있습니다.


즉 A[0] ~ A[3]까지 값이 있을때, C언어는 A[0]에는 실제값 0이, A[1]에는 실제값 1이 들어있는 형태라면,


여기서는 A[0]은 0이라는 데이터가 존재하는 곳의 주소가 존재합니다.


덕분에 인덱스로 값을 조회할 때 C와 다르게 값을 중간에 삽입하거나 삭제하는 것이 자유로운 장점을 갖을 수 있었다고합니다.


( 흠... 정말일까... 나중에 한번 메모리 뜯어가면서 확인해보겠습니다. )




마지막으로 위에 그림은 [ 집합( set ) ] 입니다만,,,


별도로 설망드리지 못한 이유는... 저 순서가 왜 섞이는지 모르겠어서...입니다.


Set의 특징은 중복을 허용하지 않는다는 것입니다. 때문에 파이썬에서 List (~= Array)에서 중복을 제거할 때, Set으로 형변환을 했다가 다시 List로 만들어주는 방법을 종종 사용했었죠.


크흠...


이 정도면, 기본문법은 끝난거 같습니다. 다음에는 함수의 정의와, 몇몇 자주 사용하는 함수들을 적어보고, 클래스와 구조체로 넘어가보겠습니다.



2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기


[Swift 입문] Swift에서 사용하는 기본 문법 알아보기

2~5까지의 게시물에서는 앱의 틀이 되는 View를 만드는 과정을 알아봤습니다. 눈에 보이는 부분이죠.

이제부터 시작하는 강의는 우리가 만든 앱에 기능을 부여해주기 위한 Swift 코딩에 대해 정리해보겠습니다.


1. 기본 연산자


기본적으로 위와같은 연산자들을 지원합니다. C언어랑 똑같네요.


물론 위에있는 연산자들이 전부는 아닙니다. ( 나머지는 나중에~ )


2. 조건문

조건문 역시 전통적인 방법을 많이 사용하고 있습니다.


If와 Switch 문법이 있습니다.





위와 같이, C와 큰 차이가 없습니다. 다만, 특이점이라면, switch문제 break를 명시하지 않아도 다음 case를 판단하지 않는다는 것과, default가 필수적으로 존재해야한다는 것뿐입니다.



3. 반복문

반복문도 for와 while 두 가지를 사용합니다. 다만 C언어의 for문이 아니라 파이썬에서의 for문과 유사하게 생겼습니다.

아래 [ ... ] 으로 연결된 부분은 1~5까지를 의미합니다. 다른 언어처럼 마지막 숫자 5를 빼거나 하지 않고 1~5까지 모두 i의 값이 됩니다.




위와 같은 상황만 있다면 불편하겠죠. 무조건 1씩 증가하니까요.


그래서 아래와 같은 문법도 있습니다. 1~10까지 2씩 증가하면서 i에 넣는거죠.




배열을 넣어줄 수도 있습니다.


파이썬이랑 비슷해서 혹시나 하는 마음에 My_list라고 변수명을 만들어서 사용해봤는데, 파이썬이랑 똑같이 작동하더군요.



다음으로 자칫 무한반복으로 가버리기 쉬운 while문 입니다.


조건을 만족하면 계속 반복하는 친구입니다.


아래와 같이 직관적으로 사용할 수 있습니다.


마지막으로 repeat라는 녀석이 있습니다.


생소한 이름이지만, C언어에서 do-while문을 생각하시면 한번에 이해가 될 것입니다.


첫번째 실행은 조건없이 수행하라는 뜻이죠. ( 두번째 반복부터는 while문과 동일합니다. )




요까지하고, 다음으로는 Swift의 배열과 딕셔너리를 다뤄보겠습니다.


2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기





+ Recent posts