iOS - 프로젝트에서 Main Storyboard 삭제하기
iOS2023. 12. 29. 14:30iOS - 프로젝트에서 Main Storyboard 삭제하기

UI를 구성하는 방법 iOS를 개발하면서 UI를 구성하는 방법엔 크게 두가지가 있습니다. 스토리보드를 사용해 UI를 구현하기 코드로 UI를 구현하기 각 방법마다 장단점이 있습니다. 스토리보드를 이용한다면? 장점 UI를 한 눈에 쉽게 확인하며 구현할 수 있습니다. UI 요소에 어떤 옵션이 적용되어있는지 쉽게 볼 수 있습니다. 단점 아무래도 인터페이스 빌더를 사용하기 때문에 XCode가 메모리를 많이 사용하게 됩니다. 스토리보드 파일에 많은 Scene들이 존재하게 되면 로딩이 많이 걸리는 단점이 있습니다. 겪어보진 못했지만 협업시 스토리보드 충돌이 있어날 수도 있습니다. 코드를 이용한다면? 장점 인터페이스 빌더를 사용하지 않기 때문에 XCode가 가벼워집니다. 협업시 충돌이 줄어들게 됩니다. 재사용성이 높은..

Swift - Optional과 Optional Binding
Swift2023. 12. 29. 14:19Swift - Optional과 Optional Binding

공식문서를 참고해서 Optional 에 대해서 정리해보자 매번 볼때마자 적응 안되는 Apple의 공식 문서.. 원형 @frozen enum Optional 차근차근 해석해보자 - @frozen : 짧게 설명하자면 나중에 새로운 case가 추가 되지 않는걸 약속한다는 의미이다! - enum : 열거형으로 선언되어있다. - Optional : Optional 로 감싸줄 데이터를 Wrapped자리에 작성해주면 된다. 개요 그렇다면 Optional 이란 무엇일까? 보통 값이 있을수도 있고 없을수도 있는 값을 우리는 Optional 이라고 말한다. 있을수도 있고 없을수도 있는 값을 Optional 이라는 케이스로 감싸준다고 생각하면 좋을 것 같다. 아래의 코드 샘플은 동일한 역할을 합니다. let shortFor..

Swift - 타입 캐스팅 톺아보기
Swift2023. 12. 29. 13:54Swift - 타입 캐스팅 톺아보기

Type Casting Doc를 참조하여 작성하였습니다. 정의 값의 런타임 타입을 정하고 타입의 정보를 제공한다. 타입 캐스팅이란 인스턴스의 타입을 확인하고나 해당 인스턴스를 자체 클래스 계층 구조의 다른 곳에서 다른 상위 클래스 또는 하위 클래스로 취급하는 방법이다. Swift에서 타입 캐스팅은 is와 as 연산자로 구현된다. 이 두 연산자는 값의 타입을 확인하거나 값을 다른 타입으로 캐스트하는 간단하고 표현적인 방법을 제공함. 타입캐스팅을 사용하면 프로토콜을 준수하는지 확인할 수도 있다! 예시 class MediaItem { var name: String init(name: String) { self.name = name } } class Movie: MediaItem { var director: S..

Apple에게 Xcode 버그 제보해 보기
iOS2023. 12. 28. 17:26Apple에게 Xcode 버그 제보해 보기

안녕하세요. 오늘은 사이드 프로젝트를 진행하던 중 겪었던 Xcode 버그를 Apple한테 제보해보려고 합니다 :) 제가 겪었던 버그는 `.xcworkspace` 파일에서 작업할 때 CoreData 모델의 Create NSManagedObject Subclass를 수행했을 때 원하는 폴더로 설정을 했음에도 불구하고 프로젝트 최상단에 소스코드가 보이는 버그를 접했는데요. 소스파일들을 꼭 폴더로 정리를 해야 마음이 놓이는 병(?)에 걸린 저로써는 참지 못했습니다.. 새로 만들어도 보고, 여러저러 삽질들을 해보던 중 `xcodeproj`에서 같은 작업을 실행해봤는데 잘 동작하더군요 (내 시간.. 🥲) 그래서 방법도 찾았고 해결방법 공유 겸 Apple에게 버그제보도 해보려고 합니다! 평점 1점대 탈출하자.. 난 ..

Swift - [weak self] 톺아보기
Swift2023. 12. 21. 16:10Swift - [weak self] 톺아보기

매번 코딩을 하다가 `[weak self]`를 작성하는 경우가 많았는데요. 어느순간 왜 얘를 써야하지? 매번 이 친구를 써야할까? 라는 생각이 들어서 조금 상세하게 알아보고자 포스팅을 시작하게 되었습니다 :] 1. 클로저는 캡쳐를 한다. 2. Swift의 클로저는 기본적으로 값 복사가 아니라 참조를 한다. 3. 참조를 할 때 강한 참조 순환이 일어나 메모리 누수가 발생 할 수 있다. 4. 그래서 [weak self]를 작성해준다. 5. 하지만 클로저에 작성하지 않아도 되는 상황이 있다. 1. 클로저는 캡처를 한다. 기본적으로 클로저는 주변 상수와 변수를 강한 참조를 통하여 캡처합니다. 그렇기 때문에 클로저는 상수와 변수를 정의한 원래 범위가 더이상 존재하지 않더라도 본문 내에서 해당 상수와 변수의 값을 ..

Swift - ARC 톺아보기
Swift2023. 12. 14. 19:36Swift - ARC 톺아보기

ARC(Automatic Reference Counting) - 자동 참조 카운팅- ARC, weak, strong, unowned 더 나아가 weak self까지 살펴보고 개념을 확실히 잡아보고자 작성을 시작한 포스팅입니다.😃 서론 ARC는 Swift 프로그래밍 언어에서 메모리 관리를 자동으로 처리해주는 메커니즘입니다. ARC는 애플이 제공하는 메모리 관리 시스템으로, 개발자가 수동으로 메모리를 할당하고 해제하는 번거로움을 줄여줍니다. 대부분의 경우에 Swift에서 메모리 관리는 “그냥 수행해라!”를 의미하고 메모리 관리에 대해서 생각할 필요가 없습니다. ARC는 인스턴스가 더이상 필요치 않을 때 자동으로 클래스 인스턴스에 의해 사용된 메모리를 할당 해제합니다. 그러나, 몇몇 경우에 ARC는 메모리를 ..

image