본문 바로가기

분류 전체보기

(35)
[Swift] split vs components (Substring) Apple Developer - split Apple Developer - component 빠른 결론 문자열을 특정 구분자를 통해 배열로 반환해야할 땐 components를 사용하는게 좋다. split을 사용할 경우 반환값으로 Substring이 반환되어 메모리 누수 위험이 생길 수 있기 때문이다. split vs components String 타입의 데이터를 주어진 조건에 따라 분할하여 배열을 반환하는 메소드 split & components 는 어떤 차이가 있을까? split func split(separator: Character, maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true) -> [Substring] separator :..
읽기 쉬운 코드를 짜기 위한 고민 Naver Engineering - 영어 변수명을 잘 지어보자 영어 변수명을 잘 지어보자 NAVER Engineering | - 발표자: 노수진(NAVER LABS) - 발표일: 2018.8. tv.naver.com 야곰 아카데미를 졸업하고 2주 정도 알고리즘 문제를 풀면서 고민이 생겼습니다. 바로 코드의 이름과 더불어 가독성을 신경쓰지 않은 것 입니다. 알고리즘 문제풀이는 특정 기능을 제한 시간 내에 만들어야 하는 특징이 있습니다. 그래서 자연스럽게 문제를 풀다보면 코드의 이름에 고민을 하기보다 문제를 어떻게 풀 수 있는지 주로 고민하며, 알고리즘 문제풀이 특유의 문화(?) 중 하나가 코드 라인의 수를 줄이는 것인데 조금은 강박적으로 코드 라인을 줄이려다 가독성을 잃어버린 경우도 있었습니다. 이 문제점..
[Swift] Struct And Class 안녕하세요, Wody입니다. 최근 코로나 백신주사를 맞아 정신이 없었습니다. 오늘은 정말 많이 사용하며, 익숙하면서도 놓치기 쉬운 녀석 클래스와 구조체에 대해 알아보겠습니다. 참고문서 : Struct And Class 구조체와 클래스의 비교 공통점 값을 저장할 프로퍼티 정의 기능을 제공하는 메소드 정의 아래 첨자 구문을 사용하여 값에 대한 액세스를 제공 초기 상태를 설정하기 위한 이니셜라이저 정의 기본 구현 이상으로 기능을 확장하도록 [extenstion]() 기능 제공 특정 종류의 표준 기능을 제공하는 [protocol]() 기능 제공 차이점 (구조체에는 없는 클래스의 기능) 상속 타입 캐스팅을 사용하면 런타임에 클래스 인스턴스의 유형을 확인하고 해석할 수 있습니다. Deinitalizers를 통해 클..
[Swift] String and Characters(문자열과 문자) Swift Docs - Strings and Characters Apple Developer - String Apple Developer - Character 문자열과 문자에 대한 정의 문자열(String)은 문자의 모음인 유니코드 문자열 값이다. 문자(Character)는 사용자가 인식하는 문자에 가까운 단일 확장 자소 클러스터다. String(이하 문자열)을 사용하다보면 Character(이하 문자)를 자주 접하게 된다. 예를 들어 문자열을 기준으로 하는 반복문을 사용하면 만나볼 수 있는데, 개별 요소로 문자가 나온다. let testStrings = "hello" for character in testStrings { print(character) } // Prints // h // e // l /..
[Swift] 옵셔널 Optional 안녕하세요, Wody입니다. 오늘은 옵셔널에 대해 공부해봤습니다. 코딩을 하다보면 많이 사용하던 개념인데 이번에 제대로 정리하고 넘어가네요. 이번에도 노션에 작성한 원본 글이 있으니 이쁜 디자인으로 보고 싶으신 분들은 아래 노션 링크를 참고해주세요. 노션 링크 Apple Developer - Optional 카테고리 : Swift - Swift Standard Library - Numbers And Basic - Optional 옵셔널 선언 @frozen enum Optional 열거형의 내부 구조 @frozen public enum Optional : ExpressibleByNilLiteral { /// The absence of a value. /// /// In code, the absence of..
[Swift] 네트워크와 무관한 URLSession Unit Test 안녕하세요 Wody 입니다. 오늘은 네트워크와 무관한 URLSession의 Unit Test에 대해 공부했습니다. 구글링을 해봤는데 대부분의 예제는 Alamofire를 이용하고 있어서 조금 어려웠는데 다른 분들께 도움이 됬으면 좋겠습니다. 원본 노션 링크 네트워크와 무관한 URLSession Unit Test를 하는 목적 유닛 테스트는 빠르고 안정적으로 진행되어야 합니다. 실제 서버와 통신하게되면 단위 테스트의 속도가 느려질 뿐만 아니라 인터넷 연결에 의존하기 때문에 테스트를 신뢰할 수 없습니다. 실제 서버와 통신하면 의도치 않은 결과를 불러올 수 있습니다. 예를 들어 우리는 서버에 Item 을 등록하는 코드를 테스트하길 원합니다. 그런데 실제 서버에 코드를 호출하면 데이터가 실제로 등록되기 때문에 의도..
[Swift] URLSession 안녕하세요, Wody입니다. 오늘은 URLSession에 대해서 공부했습니다. (사실 지난 주말에 공부했는데 공부하고 나면 진이 빠져서 블로그에 업데이트를 안하네요...) 이 글은 노션에서 작성된 글을 그대로 가져온 것입니다. 이쁘게 보고 싶은신 분은 아래 노션 링크를 참고해주세요 https://wodylikeios.notion.site/URLSession-d219933cf73640ed882475b0f614ba5f URLSession Apple Developer - URLSession wodylikeios.notion.site Apple Developer - URLSession Apple Developer Documentation developer.apple.com URLSession 네트워크 데이터 전..
[Swift] ARC와 순환 참조 안녕하세요, Wody 입니다. 이번 글은 ARC와 순환 참조가 무엇이며, 어떻게 방지할 수 있는지 알아보도록 하겠습니다. 이 글은 제가 개인적으로 공부 기록을 남기는 Notion에서 그대로 긁어온 글이라 평소와 다른 양식을 갖고 있으니 원래 글을 읽고 싶으신 분은 링크를 참고해주시면 됩니다. Automatic Reference Counting 자동 참조 카운팅 Swift는 ARC(Automatic Reference Counting)을 사용하여 앱의 메모리 사용량을 추적하고 관리합니다. 그렇기 때문에 Swift에선 ARC 덕분에 메모리 관리에 대해 생각할 필요가 없습니다. 조금 자세하게 말하자면, ARC는 해당 인스턴스가 더 이상 필요하지 않을 때 클래스 인스턴스에서 사용하는 메모리를 자동으로 해제합니다...
[Swift] Codable, JSONEncoder, JSONDecoder 안녕하세요 Wody 입니다! 이번 포스팅에서는 Swift에서 JSON 데이터 유형을 다루는 방법 중 하나인 Codable, JSONEncoder, JSONDecoder를 알아보겠습니다. 3가지를 알아보기 위한 공식 문서 Apple Developer - Archives and Serialization Codable Codable은 Decodable 과 Encodable을 합친 typealias입니다. 그래서 Codable을 알기 위해선 Encodable & Decodable을 알아야 합니다. Encodable과 Decodable은 JSON과 같은 데이터 유형을 인코딩, 디코딩 가능하게 만드는 프로토콜입니다. 자세한 사용법은 공식문서에도 친절히 나와있습니다. 기본적으로 Swift에선 인코딩과 디코딩을 구분하..
[Swift] Unit Test, TDD 안녕하세요 Wody 입니다. 오늘 알아볼 것은 Unit Test와 TDD입니다. 테스트란? 더보기 테스트는 말 그대로 시험하는 것입니다. 우리가 만든 코드가 잘 작동하는지 검증해야 안심이 되죠? 만약에 테스트 없이 코드를 쭉 작성했는데, 잘 작동하지 않는다면, 어느 코드가 잘못된 동작을 하고 있는지 알 수 없을지도 모릅니다. 그렇기 때문에 우리는 코드의 단위(유닛)별로 테스트를 해야 하는 것입니다! TDD(Test-driven development TDD) TDD - 위키백과 TDD는 개발을 하는 '방법' 중 하나입니다. 우리가 어떤 목적을 가진 프로그램을 개발할 때 다양한 방법을 가지고 개발하는데요. 객체 지향 프로그래밍, 애자일 방법론, 절차 지향 프로그래밍 등등 개발에 대한 다양한 시선과 방법이 있..