- 근본으로 돌아가자(6) Image2료일이번글은 단순히 UIImage, Image를 말하는 게 아닌 더 딥한 정보들을 정리할 계획이다. 먼저https://developer.apple.com/design/human-interface-guidelines/images Images | Apple Developer DocumentationTo make sure your artwork looks great on all devices you support, learn how the system displays content and how to deliver art at the appropriate scale factors.developer.apple.com 우선 이미지는 두가지 방식으로 구성된다.래스터 이미지: 픽셀로 이루어져 해상도가 고정되어 있어 확대..
- 2025-03-05 17:06:16(39일 전)
- 근본으로 돌아가자(5) - 프로토콜2료일오랜만에 근본 시리즈다. 그 이유는 좋은 기회로 IOS 현업에 계신 개발자분과 커피챗을 한 결과 오히려 더 기본기를 본다고 한다. 나는 기본기가 충분한가? 기본기가 충분해서 다양한 Kit들을 쓰고 아키텍처를 공부하는가? 모르겟다 그래서 프로토콜에 대해 다시 정리해보려합니다프로토콜: 요구사항이 들어있는 청사진 뭐 그냥 인터페이스?뭐 이정도는 이제 올라온 1학년 개발자도 말할 수준이다. 먼저 왜 프로토콜이 나왔는지부터 살펴보자.등장 배경다중 상속의 문제Objective-C는 동적 디스패치와 런타임에 의존하는 객체지향 언어로, 다중 상속 X. 코드 재사용성과 확장성에 제약이 존재.왜 그러면 다중 상속이 안될까? 다이아몬드 문제: A클래스를 B,C가 상속받고 D가 B,C를 상속받아 A 메서드 호출할때 어떤 경로..
- 2025-03-03 12:39:04(41일 전)
- Dynamic Dispatch는 어떻게 이루어지는가? 클래스 VS 프로토콜2료일사실 이게 첫번째 글이 아니에요. 프로토콜은 어떻게 동작하고 채택당한놈은 어떻게 알고 필수 메서드들을 구현하라고 컴파일 에러가 뜨는지 궁금했던 저는 더 나아가 프로토콜을 채택한 다양한 타입들이 같은 배열에 들어갔을 때, 어떻게 각각 올바른 메서드를 호출할 수 있을까?. 꼬꼬무하다보니 여기까지 왔습니다..쫌 어려웠어여. 주에 한번씩 복습할예정!! 들어가보자~잇!Dynmaic Dispatch정적 디스패치와 달리 런타임에 호출할 메서드가 결정되는 것입니다소스코드를 파싱하여 AST트리를 생성하고 의미분석하여 타입검사하고 중간언어인 SIL로 변환되는데 여기서 정적/동적 디스패치가 결정Virtual Tablefinal 키워드가 붙지 않은 클래스는 상속이 가능하기에 dynmaic Dispatch가 이루어진다.. 런타..
- 2025-03-02 21:11:24(42일 전)
- Preview는 어떻게 그림을 그리는 걸까? is that hotreload?2료일이전에 플러터로 개발했을때 플러터에는 Hot reload라는 아주 핫하고 편리한 기능이 있었습니다. 이는 코드를 변경을 하면 즉시 실시간으로 UI를 업데이트해서 뷰짤때 너무나 효율이 올라간 느낌.. 이 기능이 가능한 이유는 Dart언어와 그 실행환경때문입니다ㅣ.Flutter Hot reload프로세스1. 변경감지: 개발자가 Dart 소스 코드를 수정하고 저장하면, Flutter의 IDE가 이를 감지한다.2. 코드전달: 수정된 코드가 Dart VM에 전달된다. Flutter는 앱을 실행 중인 가상머신과 연결되어 있어, 이 변경사항을 실시간으로 보낼 수 있ㄷ.3. 클래스업데이트: DartVM은 변경된 소스 기반으로 앱의 클래스를 업뎃한다.4. 위젯 재빌드: 필요한 최소한의 위젯만 다시 빌드한다. 그리고..
- 2025-03-01 20:02:26(43일 전)
- ScrollView 꾸미기? Deep Dive2료일https://www.youtube.com/watch?v=alhFwkbsxrs역시나 모든 영상의 출처는 WWDC영상 찾아보다가 와 이쁘다 하면서 들어가게 되었다. 먼저 scrollTargetBehavior은 iOS17이상부터 가능하다.!!! 주의해야할듯. 사용하고 싶어도 못쓸수가 있어요~ @available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *) nonisolated public func scrollTargetBehavior(_ behavior: some ScrollTargetBehavior) -> some View흠 까보니까 안에 ScrollTargetBehavior라는 놈을 받네. 그런데 요놈은 프로토콜이다. public protocol S..
- 2025-02-22 13:23:16(50일 전)
- NSObjcet 음.. SwiftUI에선?2료일흠..이거 관련된건 개발쪽인가 면접준비쪽인가..면접에서 안물어볼거같긴한데. both인가뭐 우리가 UIKit으로 개발을 하다보면 NSObject를 상속해야하는 경우를 많이 만날 수 있다. 없으면 추가하라고 빨간 이슈가 뜬다. 대체 뭐길래??사실 이건 Objective-C의 잔해?라 하긴 그렇고 뭐라해야하지 어쨋거나 Objective-C관련된 것이다.NSObject는 Objective-C Runtime 시스템의 최상위 클래스로, 모든 Objective-C 및 Swift 클래스의 기반이 된다. Cocoa 및 Cocoa Touch 프레임워크의 루트 클래스로, 이 클래스를 상속받음으로써 런타임 시스템과 상호작용할 수 있는 기능을 포함하게 된다.NSObject를 상속받으면?• Objective-C 객체처럼 동작할 ..
- 2025-02-16 23:16:26(56일 전)
- 함수형 프로그래밍 & 명령형과 (유킷 스유)2료일뭐 우리가 UIKit이나 SwiftUI를 공부하다보면 UIKit은 명령형 프로그래밍이였는데 SwiftUI는 선언형 프로그래밍이라 짱짱 편해요~!! 🤔 음. 그러면 왜 명령형보다 선언형을 좋아하시나요?먼저 프로그래밍 패러다임이 뭔지부터 알아야한다. :) 프로그래머들이 프로그램을 바라보는 관점 👀명령형 프로그래밍프로그램의 상태(state)와 그 상태를 변경시키는 구문(statements)의 관점으로 접근한다. 프로그램은 실행할 명령들을 실행할 순서로 작성한다. 대부분의 객체지향이 속한다. 우리가 알고리즘을 풀 때 사용하는 방식이 명령형 프로그램이다. func permutation(_ arrs: [T]) -> [[T]] { var result = [[T]]() var check = [Bool](..
- 2025-02-16 17:56:00(56일 전)
- SwiftUI runLoop2료일https://www.youtube.com/watch?v=MTGh9U2yHNMSwiftUI RunLoop의 동작방식SwiftUI에서 @Published 프로퍼티가 변경되면 어떻게 UI가 업데이트 되는걸까?먼저 @Publised프로퍼티는 Combine프레임워크의 Publisher protocol따르는 프로퍼티래퍼. 1. 데이터를 가져와 @Published 프로퍼티에 할당해준다. 2. @Published 프로퍼티가 변경되면 willSet시점에 이벤트를 방출한다. -> ObservableObject 프로토콜은 ObjectwillChange 퍼블리셔를 제공하여 이퍼블리셔는 @Published 프로퍼티가 변경될때 자동으로 연결. 3. 동시에 items를 스냅샷한다. (즉 변경 이전의 상태를 저장) 4. 즉시 ..
- 2025-02-05 12:01:30(68일 전)
- MemoryLeak을 찾아보자(강한참조순환인가?) - 실전편22료일나의 앱 볼레또는 여행 날짜가 되면 CLMointior인스턴스에 해당하는 지역의 위도 경도를 넣어 모너터링을 키고 유저가 해당 지역에 가면 푸쉬 알람을 보내주는 기능이 핵심이다. 이전에는 모니터링 이외의 메모리 릭을 살펴봤는데 이번에는 모니터링에서 발생하는 Memory Leak을 살펴볼 예정이다.저번에 했던 Memory debugger Graph를 다시 열어보자. 막 거미줄마냥 엮여있다.총 16개로 저번에 1개 고치는데에도 하루종일 사용했는데 이번엔 얼마나 걸릴지 막막하다. 나의 과거를 욕해야지..일단 이번에는 Command Line Tool사용하여 더 살펴보려 한다. 메모리 그래프 디버거 킨 상태에서 File > Export Memory Graph를 선택하여 스냅샷을 파일로 저장하고 해당하는 것을vm..
- 2025-01-16 23:17:18(87일 전)
- Memory Leak을 찾아보자 실전편(1)2료일이전글에서 weak var을 설명하며 지연된 할당해제에 관해 글을 썼다. 이번엔 실제 내 프로젝트를 보며 어디서 메모리 릭이 발생하는지 찾아보자.가장 먼저 edit Scheme에서 Malloc Scribble과 Malloc Stack Logging을 켜주었다.Malloc Scribble(메모리 오버라이드 감지)Malloc Scribble은 동적 메모리 할당 시 메모리를 더미값으로 초기화하고, 해제 전까지 해당 메모리 공간에 예상치 못한 쓰기 작업이 발생하는지 감지하는 디버깅 기능. 이를 통해 초기화되지 않은 메모리에 접근하거나, 이미 해제된 메모리를 사용하는 문제를 파악할 수 있다.동작 원리• 동적 메모리 할당 시, 메모리를 특정 패턴 값으로 채운다 • 일반적으로 0xAA로 초기화.• 메모리를 ..
- 2025-01-14 02:32:19(90일 전)
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)