문자열을 문자 단위로 다루기 | Swift

스위프트(Swift) 의 문자열(String) 타입은 다년 간의 다듬질(?)을 거쳐 완성될 대로 완성된 말 그대로 완성체의 문자열을 표현하기 위한 방법을 이미 제공합니다. 그런데 C 나 Python 등 다른 언어와 비교할 때는 좀 까다로운 녀석이라고 느낄 때도 있습니다.

Range, 범위에 대한 이야기 | Swift

Swift 의 Range 기능은 1.0 이라는 초창기 버전 부터 존재했으며 Swift 버전이 올라감에 따라 여러 가지 기능이 붙거나 세분화 되었습니다. 그런데 제 블로그에서는 별도로 정리를 한 글이 없어서 이 범위(Range)에 대한 것을 정리해 봅니다. 참고로 이 글은 Swift 4.0 을 기준으로 쓰여 졌습니다.

Result of call to ... is unused | Swift

이미지
언제 부터인지 기억나지는 않지만 스위프트(Swift)에서 값을 반환(return)하는 함수나 메소드 등을 그냥 호출하면, 즉 리턴값을 받지 않고 그냥 호출하는 코드에서는 아래와 같은 경고가 뜹니다. Result of call to (Some Function or Method) is unused 메시지만 봐서는 별거 아닌 것일지도 모릅니다. 당연히 내용도 간단하고 해결법도 단순해 보입니다.

연산형 지역 변수 (Local Computed Variables) | Swift

이미지
우연찮게 미디엄 뉴스레터에서 보게 된 글에서 약간의 충격(?)을 받게 된 것이 있는데 바로 제목의 연산형 지역 변수입니다. 말이 잘 이해가 안 될 수도 있는데 영문 표현인 Local Computed Variables 의미를 거의 직역한 것이라서 애매하긴 합니다. 적당한 한국어 표현이 떠오르지 않네요. 하여간 매우 단순한 기능이지만 어떤 면에서 아주 유용하기에 간단하게 소개해 봅니다.

[Objective-C] Block implicitly retains 'self' 경고 해결하기

이미지
Xcode 를 9.3 으로 업데이트 하기 전만 해도 별 문제 없던 프로젝트가 갑자기 아래와 같은 경고를 내뿜기 시작 했습니다. Block implicitly retains 'self'; explicitly mention 'self' to indicate this is intended behavior 블록이 self 를 잡아 물고 가버릴 수도 있는데 명확하지 않다는 식으로 이해가 됩니다. 그런데 경고가 발생한 위치를 보면 위 경고 메시지가 뭘 원하는 것인지 도통 이해 할 수가 없었습니다. 경고라 가볍게 넘어 갈 수도 있겠지만 일단 해결하는 방법을 알아봅시다.

소수점 제거 함수 삼총사 ceil(), floor(), round()

이번 글은 굉장히 유명한 수학 함수 3가지를 적어보는 글입니다. 그리고 오랜만에 구어체가 아닌 존대말(?)로 쓰는 글이기도 하겠네요. 이번에 언급하는 함수 세 가지, 즉 ceil(), floor(), round() 함수는 C 언어 시절부터 쓰이던 수학 함수 중 일부입니다. 이 함수 들은 현대의 거의 대부분의 언어에서도 대부분 동일한 이름으로 제공될 정도로 필수 함수이지요. 이 함수들의 용도 및 활용법을 Swift 기준으로 정리해 보겠습니다. 물론 다른 언어에서도 거의 동일하니 언어가 의미가 있는지는 잘 모르겠지만요.

NSButton Cheatsheet

이 글은 NSButton 을 사용하면서 필요로 했던 체감형 팁을 정리하는 글이다. 상황(?)에 따라 추가 업데이트가 될 수 있다.

NSTextField Cheatsheet

이 글은 NSTextField 에 관한 여러 체감형(?) 팁을 모은 것이며 관련된 지식 습득 시 업데이트 될 가능성이 있다. ;-)

Swift struct 값의 프로토콜을 제대로 판단하지 못 하는 문제

아직 세상은 넓고도 험하다. 코딩을 하던 도중 아래 오류의 문제가 제법 골머리를 썩였다. Could not cast value of type ‘_SwiftValue’ to ‘SomeProtocolName’ 이 글은 위의 오류와 관련된(?) 문제를 해결하던 과정에서 나온 오랜만의 삽질을 정리한 내용이다.

어느날 @objc Inference 와 관련된 경고를 보았다

이미지
Xcode 9 이전에 개발했던 프로젝트를 Xcode 9 에서 Swift 4 기반으로 변경한 적이 있다. 이 과정에서 단 한줄의 코드 변경도 없었고, 당연하게도 해당 프로젝트는 별 문제는 없이 잘 동작하였다. 다만 약간 찝찝하게도 빌드 도중 아래와 같은 색다른(?) 경고를 보게 되었다. The use of Swift 3 @objc inference in Swift 4 mode is deprecated. Please address deprecated @objc inference warnings, test your code with “Use of deprecated Swift 3 @objc inference” logging enabled, and then disable inference by changing the "Swift 3 @objc Inference" build setting to "Default" for the "TARGET NAME" target. 해석하자면 뭐라고 할까... 그냥 구버전 방식의 @objc 를 사용하는 것이 Swift 4 에선 호환이 안되니 무슨무슨 설정을 바꿔라 이런 의미로 해석된다. 하여간, 이 글은 이 경고를 해결하는 방법을 설명한다.