Swift 2.2 release

Swift 2.2 3월 21일에 Swift 2.2가 정식 버전이 되었다. Swift 블로그에 어떤 내용이 변경되었는지 나왔는데, 하나씩 살펴보았다. SE-0001: Allow (most) keywords as argument labels 함수 인자의 외부 이름 라벨(argument label)에 in 같은 키워드를 사용하기 위해서는 `in` 형태로 사용해야 했다. 1 2 3 func test1(name: String, `in` inString: String) { print("\(name) in \(inString)") } 이번 버전부터는 inout, var, let을 제외한 키워드 대부분을 사용할 수 있게 되었다. 1 2 3 func test1(name: String, in inString: String) { print("\(name) in \(inString)") } SE-0015: Tuple comparison operators 튜플에 대한 <, > 같은 비교 연산이 추가되었다....

3월 22, 2016

Swift2의 defer 구문

크게 다가온 defer 구문 Apple의 Swift2 메뉴얼의 Error Handling에서 짧게 설명한 defer 구문. 설명은 얼마 안 되었지만 크게 다가왔다. 정리 작업 처리 코드 작성을 상당히 편하게 만들어 줄 수 있을 것으로 보였기 때문이다. 정리 작업을 하는 경우 어떤 작업을 하기 위해 준비 작업과, 정리 작업을 하는 함수의 경우에 다음과 같은 형태로 작성될 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 boolean f() { a() b() do1() if something is fail { ~b() ~a() return false } do2() ~b() ~a() return true } 작업 중간에 함수를 빠져나가게 될 경우, 정리 작업을 해줘야 한다....

1월 13, 2016

CS193P 강좌의 과제의 결과물을 비교해보자.

Self Feedback! CS193P 온라인 강의의 과제를 홀로 진행하다 보니, 직접 작성한 코드에 대한 피드백이 없다. 직접 피드백을 받을 수 없어서 공개한 과제 결과물을 보고 스스로 비교 평가를 해야 한다. 온라인 강의를 듣고, 과제를 진행하는 사람들이 온라인에 많다. 구글에서 검색해도 되지만, 코드를 먼저 볼 것이기에 github에서 “cs193p"로 검색을 하면 많이 나온다. 이 중에서 과제를 진행하는 것을 찾아 보면 된다. m2mtech 이 중에서 가장 많은 별표를 받은 m2mtech 계정이 눈에 띈다. 과제별로 과제의 요구사항 수준으로 보기 좋게 Commit 되어 있다....

4월 7, 2015

Objective-C로 구현된 LCDView를 Swift로 변환

복싱 타이머 숫자 표시 복싱 타이머에서 시간을 어떻게 보여줄까 생각하다가 LCD 시계처럼 보여주기로 했다. Github에서 “LCD Digit"으로 검색해서 찾은 LcdiPhone을 사용하기로 했다. “Cocoa LCD Screen View”을 보니 괜찮다. 사용권도 Apache License 2로 사용하는데 별문제가 없다. Objective-C로 구현되어 있어도 Swift에서 직접 사용할 수 있겠지만, Swift를 익히는 과정이기에 Porting을 해보기로 했다. Swift 버전 Github 저장소에 있는 파일 중에서 숫자 표시 View인 MTILcdView.h, MTILcdView.m 파일만 Swift로 재구현했다. Swift에서는 헤더 파일이 따로 없기에 LCDView.swift 파일 하나로 구현했다....

4월 3, 2015

CS193P 강좌의 Demo 프로그램들

수업을 들으면서 데모 프로그램들을 따라서 만들었다. 자세한 내용은 강좌에 다 나오기에 생략한다. Hapiness Psychologist Autolayout Cassini Smashtag Dropit Trax Bouncer

3월 18, 2015

Boxing Timer에서 Model 설계 및 구현

Model 설계 Boxing Timer에서 Model의 역할은 다음과 같다. 정해진 시간을 내려 센다. 3분을 내려 센 후, 종료하면 30초를 내려 센다. 이것을 멈추기 전까지 반복한다. 매 초마다 변경된 시간을 알린다. 시간이 0이 되었다고 알린다. 시간을 알리는 것은 Protocol을 이용한다. Model 구현 대략 다음의 인터페이스를 구현했다. 시간 알림 Protocol을 구현한 Observer 등록 타이머 시작 타이머 멈춤 타이머 시간 초기화 여기까지 작업한 소스는 Github에 올려두었다.

3월 2, 2015

연습으로 만들어볼 복싱 타이머

Boxing Timer 건강을 위해 집에서 가장 가까운 체육관에 운동하러 다닌다. 헬스클럽은 아니고 복싱 체육관이다. 복싱 체육관이다 보니 대부분의 운동 시간은 복싱 라운드가 기본 단위가 된다. 3분 운동하고 30초 쉬고, 다시 3분 운동하고 30초 쉬는 것의 반복이다. 쇠로 된 벨에 연동되어 있어, 시간이 끝날 때마다 크게 땡 소리가 울려 퍼진다. 초기 기능 목록 대충 생각나는 핵심 기능만 정리해본다. 일단 시간은 2가지에서 선택할 수 있다. 3분/30초 반복, 2분/30초 반복. 시작/정지 버튼 및 초기화 버튼....

2월 24, 2015

Programming Project 2의 기본 요구 사항들 구현 완료

Programming Project #1의 Extra Credits 구현 완료 Backspace 버튼과 입력한 숫자의 부호를 바꾸는 “+/-” 버튼 등을 추가하는 작업이었다. 배운 것들을 살짝 응용하는 정도로 큰 어려움은 없었다. Programming Project #2의 기본 요구 사항들 구현 완료 Model을 추가한 후, 입력했던 것들을 수식으로 보기 좋게 출력하는 것과 메모리 관련 기능을 구현하는 것이었다. 실행화면은 다음과 같다. Auto Layout을 이용한 결과물이라 다양한 iOS 하드웨어의 화면 및 장비 수평에 맞게 버튼들이 배치된다. 작업 결과물은 github에 올려뒀다.

2월 14, 2015

Programming project 2 진행 중

Model 부분 구현 Programming Project 1에서는 View와 Controller만으로 구현된 계산기였다. Programming Project 2에서는 수업에서 데모로 보여준 Model 부분을 구현하는 것으로 시작한다. 구현된 소스는 github에 올려두었다.

2월 12, 2015

두번째 iOS Application

“Developing iOS 8 Apps with Swift” 강좌를 듣고 있다. iTunes U에 올라오는 강좌를 따라가고 있다. 인터넷으로 공개할 것을 감안하고 진행하는 강좌이기에 온라인 학습자를 위한 많은 배려가 강의에 담겨있다. 예를 들면 이런 것들이다. 수업을 진행하는 교수의 모습 및 데모가 수행되는 컴퓨터 화면을 녹화 후 인터넷으로 보기 좋게 편집이 되어서 올라온다. 학생들에게 질문을 받으면 학생들 목소리가 제대로 녹음이 되지 않았을 것을 생각하여 어떤 질문이었는지 교수가 이야기한 후, 답변한다. 강연 동영상 이외에 발표 자료, 과제들도 PDF 문서로 올라온다....

2월 10, 2015