fun shakeEm(controls: [UIControl & Shakeable]) 처럼 Subtype existential 가능. ObjC의 NSView<NSTextInputClient> 와 같은 기능.
Smooth 한 version up 을 원하기 때문에 3 → 4로 간다고 문제가 많이 발생하진 않을 것. (Target 별로 Swift version 선택 가능.)
Project Settings → Build System → New Build System (Preview) 선택. Precompliled Header가 매번 Indexing 하지 않게 해줄 것.
Coverage Test 할 때도 다시 Build 할 필요 없음. (Build 할 때 알아서 챙겨줌.)
Unknown Type일 경우 성능 떨어짐. (Heap에 alloc 되기 때문) WWDC 2016 Understanding Swift Performance 참고. COW (copy-on-write) reference-counted existential buffers 사용해서 성능 향상 했으나, 근본적으로 Heap alloc 되지 않게 주의해!
안쓰는 code는 compile 할 때 자동 삭제됨. @objc 도 필요한 곳만 붙음. (이 때문에 error, warning 뜰 수 있음. Compile, RunTime warning 잘 확인해서 해결해)
Symbol Size가 줄어서 App Size도 줄었음. Strip Swift Symbols를 Yes로 변경. Archive 할 때도 Option이 있음.
기존에는 “\u{E9}” 와 “\u{65}\u{301}”이 표기법은 동일해도 완전히 다른 문자로 인식되었으나, 동일한 문자로 되도록 변경. (Length도 1로 동일). 속도도 빨라짐
Characters.count → .count 로 변경.
string[i..<string.endIndex] → string[i…] 으로 가능 👍
String을 Collection처럼 사용가능해서 Extension 이용해서 custom filter를 만들 수 있음. 👍
Performance 때문에 .split(separator: )가 SubString이라는 Type으로 나옴. subString할 경우, reference count가 +1 되기 때문에 dealloc이 쉽지 않다. 특히 문장이 길다면 더더욱 큰 문제.(나는 한 단어만 필요한데 전체 문장을 계속 Memory에 가지고 있음.)
“”” 을 통해서 multiline text 사용하기 편해짐.👍
Iterator을 간편하게 extension할 수 있도록 기능 제공.
RangeExpression 을 통한 subscript 가 정말 좋아 보임. (Calendar 개발 할 때, 이렇게 했음 더 좋았을 듯.)
Ownership을 통한 Memory 관리 Tip 설명.
Exclusive Access to Memory → Full Enforcement (Run-time Checks in Debug Builds Only). (메뉴 설정)
Formatters (dateFormat = “YYYY.MM” 사용하지 말고 .full 같은 형식으로 사용하라. 언어에 따라 자동으로 순서 바꿔주기 때문)
Localization Process - XLIFF 형식으로 Export, Import 가능 - Stringdict 이용한 Plurlas (1 night, 2nights를 하나의 Localized Dict으로 표현 가능. variantFittingPresentationWidth를 이용한 해상도별 문구 변경 기능) 👍
2차 방적식, log 등 수학 배울 때 이게 어디에 쓰이는 지 알 수도 없는데 도대체 왜 배우는지 학생들은 모름. 그런데 결국 나중에 Puzzle 풀거나 할 때 사용됨. 논리적인 사고에 도움이 됨. 그림 배울 때 빨리 그림을 배우고 싶지 페인트 속성들을 왜 공부하는지 학생들은 모름. 음악 배울 때 오선표, 음표를 배우기 보다 빨리 연주하고 싶고 작곡하고 싶은 마음이 더 큼. Algorithm, data structure 중요하나 흥미 유발이 가장 먼저 결국, 동기 부여가 가장 중요하다. 동기 부여는 어려운 문제를 포기하지 않고 끝가지 풀게 해준다.
동기 부여하기 위해서는 복잡한 것 보다 fun 을 추구해야 한다. 복잡한 coding logic 이런거 발고 단순히 게임을 통해 퍼즐 풀도록 하면 도움 됨.
Story 만들기 전에 prototype을 만들고 feedBack 받아라 (연습장에 연습해 봐라.)