전체 글 썸네일형 리스트형 os_log에 대하여 개요 프로젝트를 진행하다 멘토님께서 이러한 리뷰를 남겨주셨는데요. 콘솔창에 메시지를 찍기 위해서 print()밖에 사용하지 않았기 때문에 처음 들어보는 os_log에 대해서 정리해봤어요. os_log os_log는 Apple의 로깅 시스템의 일부로, 앱 및 시스템 서비스의 실행 중에 발생하는 정보, 경고 및 오류와 같은 정보를 기록하는 데 사용돼요. 이 로깅 시스템은 고성능이며, 앱의 성능에 크게 영향을 주지 않으면서도 유용한 로그 정보를 캡쳐하는 데 중점을 둬요. os_log의 주요 특징은 다음과 같아요. 카테고리화: 로그를 다양한 카테고리로 분류할 수 있어요. 이를 통해 관련 로그를 빠르게 찾을 수 있죠. 효율성: 로그 메시지는 런타임에 평가되기 전까지 문자열 인터폴레이션을 지연시켜요. 이는 불필요한.. 더보기 Container With Most Water - leetcode https://leetcode.com/problems/container-with-most-water/description/ class Solution { func maxArea(_ height: [Int]) -> Int { var max = 0 // 시작 인덱스 var startIndex = 0 // 끝 인덱스 var endIndex = height.count - 1 // 시작 인덱스가 끝 인덱스 보다 작을 때만 반복 while (startIndex < endIndex) { // x축 길이 구하고 let x = abs(startIndex - endIndex) // y축 길이는 두 막대 중 길이가 작은 걸로 let y = min(height[startIndex], height[endIndex]) // 가장.. 더보기 F-Lab iOS 멘토링 4개월 코스 한 달차 후기 서론 저는 항상 지금 공부하고 있는 방향에 대해 지적해줄 사람을 원해왔습니다. 몇몇 개발 동아리와 교육 프로그램을 경험해봤지만 이러한 갈증이 해소되지는 않았습니다. 그러다 F-Lab의 IT 기업의 현직 시니어 개발자분이 해주시는 1대1 멘토링에 대해 알게되었고 최근에 4개월로 변경되며 가격적인 부담이 줄어 들었길래 신청하게 되었습니다. 아직 한 달차인 만큼 거두절미하고 멘토링 진행 과정에서 느낀 점을 최대한 솔직하고 자세하게 작성했습니다. 멘토링 시작 전 보통 첫 멘토링 1주차가 시작하기전에 1~2주 정도 시간이 있을 확률이 높습니다. (바로 시작할 수도 있음) 멘토님도 배정되어야하고 요일과 시간도 정해야하기 때문입니다. 저의 경우엔 처음 개설된 iOS 과정을 신청했기 때문에 2주일 정도 시간이 있었습니.. 더보기 init(coder:), init(frame:) 파해치기 개요 UIView를 상속받아 커스텀 뷰을 그리다보면 init(coder:)와 init(frame:)을 만나게 되는데요. 이 두 생성자가 어떤 역할을 하는 지, 그리고 왜 init(coder:) 생성자가 필수인지에 대해 알아보았어요. init(frame:)과 init(coder:) init(frame:)과 init(coder:)는 iOS에서 UIView를 상속받는 클래스를 커스터마이징할 때 자주 마주치게 되는 두 개의 초기화 메서드에요. 이 두 메서드는 UIView 및 해당 서브클래스들의 생성 시 사용되며 각각 다른 상황에서 호출돼요. init(frame:) 이 초기화 메서드는 프로그래밍 방식으로 뷰를 생성할 때 호출돼요. 예를 들어, let myView = CustomView(frame: CGRect(x.. 더보기 Zigzag Conversion - leetcode https://leetcode.com/problems/zigzag-conversion/description/ class Solution { func convert(_ s: String, _ numRows: Int) -> String { // 지그재그 문자를 저장할 배열 var words: [String] = [String].init(repeating: "", count: numRows) // 입력받은 문자열을 배열로 변환 let input = s.map { $0.description } // 증가할건지 감소할건지를 정하는 변수 var sign: Bool = true // 지그재그 문자를 저장할 배열의 인덱스 var index: Int = 0 // 만약 한 줄이면 문자 그대로 리턴하고 끝냄 if numRo.. 더보기 Add Two Numbers - leetcode https://leetcode.com/problems/add-two-numbers/description/ public class ListNode { public var val: Int public var next: ListNode? public init() { self.val = 0; self.next = nil; } public init(_ val: Int) { self.val = val; self.next = nil; } public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; } } class Solution { func addTwoNumbers(_ l1: ListNode?, _ l2: ListNode?) -> Li.. 더보기 Swift Style Guide 번역 (공부용) Fundamentals (기본 사항)사용 시점의 명확성이 가장 중요한 목표입니다. 메서드나 프로퍼티와 같은 엔티티는 한 번만 선언되지만 반복적으로 사용됩니다. 이러한 사용처를 명확하고 간결하게 만들 수 있도록 API를 설계하세요. 설계를 평가할 때 선언문을 읽는 것만으로는 충분하지 않으며, 항상 사용 사례를 검토하여 문맥상 명확하게 보이는지 확인해야 합니다.간결함보다 더 중요한 것은 명확성입니다. Swift 코드는 간결할 수 있지만, 최소한의 문자로 가능한 한 가장 작은 코드를 구현하는 것은 목표가 아닙니다. Swift 코드의 간결성은 강력한 타입 시스템과 상용구를 자연스럽게 줄여주는 기능의 부작용입니다.모든 선언에 대해 문서 주석을 작성하세요. 문서 작성을 통해 얻은 인사이트는 디자인에 큰 영향을 미칠.. 더보기 Submodule에 대하여 개요 Git - Submodules 프로젝트를 작업하다보면 그 안에서 다른 프로젝트를 사용해야하는 경우가 종종 있어요. 타사에서 개발한 라이브러리거나 별도로 개발하여 여러 상위 프로젝트에서 사용하고 있는 라이브러리일 수도 있죠. Git의 서브모듈을 사용하면 Git 레포지토리를 다른 Git 레포지토리의 하위 디렉토리로 유지할 수 있어요. 주요 명령어 submodule 추가: 특정 URL에서 하위 모듈을 현재 저장소에 추가해요. git submodule add [URL] [path/to/submodule] 하위 모듈과 함께 저장소 클론: 저장소와 그 안의 모든 하위 모듈을 동시에 클론해요. git clone [URL] --recurse-submodules submodule 초기화 및 업데이트: 만약 --re.. 더보기 이전 1 2 3 다음