목록개발/Swift (2)
Stacking Fire
(2018년 1월 23일, 내용 업데이트) 소개 Lintlint는 컴퓨터 프로그래밍에서 의심스럽거나, 에러를 발생하기 쉬운 코드에 표시(flag)를 달아 놓는 것을 말한다. 원래는 C 언어에서 사용하던 용어였으나 지금은 다른 언어에서도 일반적으로 사용된다. 위키백과, 우리 모두의 백과사전. 이름에서도 짐작하실 수 있는 것처럼, Swift용의 Lint를 SwiftLint라고 합니다. Xcode는 그 자체로도 어느 정도는 걸러내 줍니다만, 스타일까지는 터치하지 않습니다. SwiftLint는 거기서 한 걸음 더 나가서 빡세게 스타일까지 검사합니다. 심지어 공백을 한 칸 이상 띄우는 행동이나 한 파일이 500줄이 넘어가면 다시 생각해보라는 식입니다. 적용례 아래와 같은, 여기저기 조금 어색하지만 굳이 XCode..
Closure 안에서 self를 무심코 참조하여 쓰는 경우가 많습니다. 하지만 Swift에서는 Closure가 일급 객체이기 때문에, self의 프로퍼티로 저장될 수도 있습니다. 아무 조치 없이 그냥 쓴다면 상호참조로 인해 메모리 누수가 발생하기 쉬운데요. 그래서 클로저 파라미터 앞에 [weak self]를 넣어 리테인 카운트를 올리지 않은 채 참조할 수 있도록 해주는 것이 필요합니다. 이렇게 weak 키워드를 넣으면 클로저 내부에서는 self를 옵셔널로 판단합니다. 쓰려면 까 주어야죠. someInstance.someFunction { [weak self] param in guard let `self` = self else { return } self.someOtherFuction(param) //아니..