iOS 개발 23

[WWDC19] Architecting Your App for Multiple Windows

[WWDC19] Architecting Your App for Multiple Windows https://developer.apple.com/videos/play/wwdc2019/258/ Architecting Your App for Multiple Windows - WWDC19 - Videos - Apple Developer Dive into the details about what it means to support multitasking in iOS 13. Understand how previous best practices fit together with new... developer.apple.com 제가 이해한 부분 위주로 정말 대충 정리했습니다 ㅡ.,ㅡ ;; 반박 시 님 말이 다 맞음 ~ ..

iOS 개발/iOS 2023.03.07

[iOS] 이미지 캐시 모듈 구현하기 (feat. Kingfisher)

[iOS] 이미지 캐시 모듈 구현하기 (feat. Kingfisher) 부스트캠프에서 그룹 프로젝트를 진행 중, 주간 발표 세션에서 다른 팀이 이미지 캐시 모듈을 개발했다는 소식을 들었습니다. 이미지 캐시를 UIImage 의 extension 을 이용해서라던지, 혹은 클래스 하나로 분리하여 디스크에 파일을 저장해본 적은 있지만 완전히 독립적으로 동작할 수 있는 모듈은 구현해본적이 없던 터라 저희도 이미지 캐시 모듈을 구현해보고자 했습니다. 아무래도 iOS 이미지 캐시 라이브러리 중 가장 유명한 Kingfisher 를 모방해보면 좋겠다는 생각을 했고, 저희 이미지 캐시 모듈 이름은 KingReceiver 로 정했읍니다. ^.^ GitHub - trumanfromkorea/KingReceiver Contri..

iOS 개발/iOS 2022.12.28

[Swift] weak self, 어떻게 사용해야할까? (2/2)

[Swift] weak self, 어떻게 사용해야할까? (2/2) [Swift] weak self, 어떻게 사용해야할까? [Swift] weak self, 어떻게 사용해야할까? 클로저를 매개변수로 받아 메소드를 작성하는 경우, 혹은 URLSession 이나 DispatchQueue 를 이용할 때, 클로저 내부에서 클로저 외부의 프로퍼티나 메소드를 사용 trumanfromkorea.tistory.com 앞선 글에 이어서 마저 작성해보도록 하겠습니다. GCD GCD 호출은 나중에 실행하기 위해 어딘가에 저장하지 않는 한 순환참조가 발생할 위험이 없습니다. 다음 코드와 같이 작업이 바로바로 수행되는 경우에는 [weak self] 를 사용하지 않더라도 메모리 누수가 발생하지 않을 것입니다. func nonLea..

iOS 개발/Swift 2022.10.23

[Swift] weak self, 어떻게 사용해야할까? (1/2)

[Swift] weak self, 어떻게 사용해야할까? (1/2) 클로저를 매개변수로 받아 메소드를 작성하는 경우, 혹은 URLSession 이나 DispatchQueue 를 이용할 때, 클로저 내부에서 클로저 외부의 프로퍼티나 메소드를 사용하는 경우 self 를 사용해야 한다는 경고창을 한 번쯤은 보신적이 있으실겁니다. 저는 위와 같은 상황을 겪을때마다 별 생각 없이 self 를 앞에 붙여주었습니다. 시간이 지나 self 는 해당 클로저를 품고있는 객체를 강하게 참조한다는 것을 알게 되었고, [weak self] 를 이용하다는 것이 안전하다고 하기에 그렇게 사용하고 있었습니다. 하지만 이런 경우 self 가 약하게 참조되기 때문에 옵셔널 체이닝을 해주거나, guard let 구문을 이용하여 바인딩 해줘..

iOS 개발/Swift 2022.10.23

[Swift] Swift 언어가 가진 특징

[Swift] Swift 언어가 가진 특징 Swift 는 애플이 WWDC14 에서 공개한 언어로 iOS, iPadOS, watchOS, macOS 등 애플 제품 개발에 활용되는 개발 언어입니다. 오늘은 Swift 언어가 가진 특징들에 대해서 간략하게 알아보겠습니다. 특징 & 다른 언어와의 차이점 안정성 변수는 사용 전 항상 초기화되어야 함 배열 및 정수에 대한 overflow 검사가 수행됨 ARC 를 지원해 메모리 관리가 간편함 강력한 타입 통제 타입 추론 양방향으로 가능 Collections 처럼 일반적으로 사용되는 Value 타입 최대한 활용 해당 타입을 복사할 경우 다른 곳에서는 수정 불가 Optional 변수 혹은 상수의 값이 nil 일수도 있음을 의미 Optional 값을 언래핑하는 여러 구문을..

iOS 개발/Swift 2022.08.17

[TIL] Swift 에서 Array 를 탐색하는 방법들의 차이 (for in)

[TIL] Swift 에서 Array 를 탐색하는 방법들의 차이 (for in) 프로그래머스에서 코딩테스트 문제를 풀다가 신기한 점을 발견했습니다. Array 를 탐색하는데 인덱스로 탐색하는 것과 for in 을 이용하여 Array 의 원소에 직접 접근하는 것이 꽤나 많은 시간차이를 보인다는 것이었습니다. https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 제가 풀던 문제는 이 문제였는데, 효율성 테스트 부분을 통과하지 못하고 있었습니다. 그런데 ..

iOS 개발/Swift 2022.07.17

[iOS] 메모리 구조

[iOS] 메모리 구조 프로그램이 실행되면 OS 는 메모리에 프로그램을 위한 공간을 할당해줍니다. 메모리는 크게 4가지 영역으로 나뉘어져 있는데, 이는 각각 코드 영역, 데이터 영역, 힙 영역, 스택 영역이라고 불립니다. 코드 영역 소스코드가 기계어 형태로 저장됨 컴퓨터가 읽을 수 있는 가장 밑단의 언어로 binary 하게 이루어짐 (0, 1) 컴파일 타임에 결정되고, 중간에 코드가 변경되지 않도록 Read-Only 형태로 저장됨 코드 영역은 말 그대로 프로그램의 소스코드를 기계어 형태로 저장하는 영역입니다. 프로그램이 실행되며 소스코드가 변경되면 안되기 때문에 Read-Only 형태로 저장됩니다. 데이터 영역 전역변수, static 변수가 저장됨 프로그램 시작과 동시에 할당되며 프로그램이 종료되어야 메..

iOS 개발/iOS 2022.07.12

[iOS] Delegate Pattern

[iOS] Delegate Pattern Delegate 는 위임하다, 대리자 등의 뜻을 가진 단어입니다. 말 그대로 Delegate Pattern 은 대리자를 가지고 있는 객체가 대리자 객체에게 자신의 일을 위임하는 형태의 디자인 패턴입니다. 이는 하나의 객체가 모든 일을 처리하는 것이 아니라 다른 객체가 이를 일부분만 확장하여 처리하도록 위임하는 방식입니다. 말만 들어서는 잘 이해가 되지 않을수도 있으니 예시를 들어 설명해보겠습니다. 예시 영화를 만드는 Producer 라는 객체가 있다고 가정하겠습니다. 영화를 만들려면 누군가가 연기를 해야하는데, 대부분 감독들이 직접 연기를 하는 경우는 없죠. 그러니 다른 누군가에게 자신이 생각한 연기를 하도록 시킵니다. 이렇게 대신 연기를 하는 객체를 Actor ..

iOS 개발/iOS 2022.07.06

[Swift] Optional

[Swift] Optional Optional 은 해당 변수가 어떤 타입의 값을 가지고 있을 수도 있고, 혹은 nil 을 가지고 있을 수도 있다는 의미입니다. Optional 의 구현부를 살펴보면 위와 같이 none 과 some(Wrapped) 라는 case 를 가진 열거형으로 구현되어 있습니다. none 일 경우 nil 을 가지게 될 것이고, some(Wrapped) 는 Wrapping 된 어떠한 값을 가지고 있게 될 것입니다. HTML 삽입 미리보기할 수 없는 소스 Optional 은 위처럼 두가지 방법으로 선언할 수 있지만, 대부분의 경우 타입 뒤에 ? 를 붙이는 방식을 선호하는 것 같습니다. Optional 은 초기값을 할당해주지 않으면 nil 로 초기화됩니다. Optional 을 상수로 선언할 ..

iOS 개발/Swift 2022.07.04