RxSwift(2)-Subject
·
iOS/반응형프로그래밍
1. Subject란?RxSwift에서 Subject는 Observable과 Observer의 특성을 모두 갖춘 하이브리드 요소입니다. Observable처럼 값을 방출할 수 있으며, 동시에 Observer처럼 다른 Observable을 구독할 수도 있습니다.흠... 그니까 양방향이라고 생각하면된다. Observer로서: onNext(_:), onError(_:), onCompleted() 메서드를 호출하여 값을 수신Observable로서: 구독자들에게 값을 방출하고 이벤트 전달Subject가 필요한 이유?1. 이벤트 브릿징: 명령형코드와 반응형 코드 사이의 연결고리(너와 나의 연결 고리)2. 멀티캐스팅: 하나의 Observable 실행 결과를 여러 구독자에게 공유3. 상태 관리: UI상태나 앱 상태를 ..
RxSwift(1)-Observable
·
iOS/반응형프로그래밍
사실 저는 개인적으로 Combine을 너무나 사랑하고 자주 사용하는 개발자입니다. 같은 반응형 프로그래밍의 개념이지만 애플에서 만든 퍼스트 파티로 외부 라이브러리를 관리할 필요가 없기 때문이죠. 하지만 Combine이 나오기 이전에는 RxSwift로 사용을 했습니다. 그러다보니 여전히 여러 기업에서는 Rx를 쓰죠! 그렇기에 저도 Rx마스터가 되어야 하겟습니다.Rx?: ReactiveX 프로그래밍 패러다임을 Swift로 구현한 라이브러리비동기 프로그래밍을 선언적이고 함수형 접근 방식으로 처리하여 코드의 가독성과 유지보수성을 획기적으로 향상시킵니다.복습 : 반응형 프로그래밍: 데이터 흐름과 변경 사항의 전파에 중점을 둡니다. ex) data가 바뀌면 UI가 자동으로 반응한다핵심 구성요소1. Observabl..
근본으로돌아가자(7)-String,Array으로 시작해서 Sequence까지
·
iOS
String이 왜 복잡할까?Swift의 String은 단순해 보이지만 내부는 꽤 복잡합니다. 왜일까요?let emoji = "👩‍🚀"for scalar in emoji.unicodeScalars { print(scalar)}// 출력:// U+1F469(👩)// U+200D// U+1F680(🚀)핵심 이유: 유니코드 때문입니다.String은 Character들로 구성각 Character는 하나 이상의 유니코드 스칼라로 구성그래서 배열처럼 string[0] 이런 식으로 접근 불가그래서 Swift는 String.Index를 사용합니다 퀴즈: 👍? => U+1F44D인 단일유니코드스칼라.여기까지가 면접의 단골질문이자 당연히 알아야하는 것입니다. 물론 아닐수도..? 모르면 지금 배우면 됏죠!!ㅎㅎ..
Metal(2)-셰이더 코드 작성까지
·
iOS
이전 글 요약https://codeisfuture.tistory.com/119 Metal(2)-셰이더 코드 작성까지이전 글에서 메탈이란 GPU에 접근하여 빠른 그래픽 처리를 가능하게 해주는 저수준 API라는 것을 학습했다. 즉 Spiritekit, Animation 밑의 있는 것!! 이번엔 그래서 메탈이 어떻게 렌더링을 하는지 살펴codeisfuture.tistory.com이전 글에서 Metal이란 GPU에 접근하여 빠른 그래픽 처리를 가능하게 해주는 저수준 API라는 것을 학습했습니다.즉 SpriteKit, Core Animation 밑에 있는 기반 기술이죠! 이번엔 Metal이 어떻게 렌더링을 하는지, 그리고 실제로 커스텀 필터를 어떻게 만드는지 자세히 살펴볼 계획입니다렌더링 프로세스Metal은 '초..
Metal(1)- 메탈을 알기전에 필요한 것들
·
iOS
그래픽 관련 공부를 해야 할 계기가 생겼고, 이것도 하나의 기회라고 생각해서 블로그에 정리하면서 자세히 공부해보려고 합니다.예전에 AR 쪽 할 때 Metal을 본 것 같은데 기억이 안 나서 아예 처음부터 다시 정리해볼게요! Metal을 이해하려면 먼저 "왜 Metal이 필요했는가?"를 알아야 합니다. 그러려면 컴퓨터가 그래픽을 어떻게 처리하는지부터 차근차근 알아봐야겠죠?컴퓨터 아키텍처의 기초CPU: 컴퓨터의 두뇌ALU (산술논리장치): 수학적 연산과 논리 연산을 수행제어장치: 명령어를 해석하고 실행 순서를 결정레지스터: 고속으로 임시 데이터를 저장캐시메모리: 자주 사용되는 데이터와 명령어를 저장CPU는 순차적 처리에 최적화되어 있어서 복잡한 논리나 분기문을 잘 처리하지만, 같은 연산을 반복해야 하는 작업..
Autolayout 모든 것: 사이클부터 제약조건까지
·
iOS
오토레이아웃이란?iOS 및 macOS에서 UI요소의 위치와 크기를 동적으로 관리하는 시스템: SuperView 크기가 변경되면, Constraints로 잡혀있는 값을 기준으로 본인의 크기를 적절하게 변화시키는 것입니다.레이아웃 업데이트 사이클Autolayout은 크게 3가지 레이아웃 처리 과정을 통해 화면을 그립니다.1. Update Constraints메서드가 호출되며 기존 제약 조건을 갱신하거나 새로운 제약조건을 추가하는 로직 수행2. Layout 계산: layoutSubviews 메서드가 호출되며 업데이트된 제약 조건을 바탕으로 실제 프레임 계산3. Display: draw 메서드 호출되어 계산된 프레임에 따라 화면이 그려진다.이 사이클은 엄격히 순차적으로 매번 실행되는 것이 아닌 UIKit 뷰 업..
Apple의 보안
·
iOS
안녕하세요! iOS 개발에서 정말 중요한 보안 메커니즘에 대해 정리해보겠습니다. 프로비저닝 프로파일과 샌드박스는 iOS 생태계의 핵심 보안 기둥이라고 할 수 있어요 🔐🔐🔐프로비저닝 프로파일왜 애플은 앱스토어 외부에서 앱을 설치하기 어렵게 만들었을까요? 🤔 바로 신뢰성 때문입니다. "이 개발자가 만든 앱을 내 기기에서 실행해도 될까?"라는 질문에 대한 답이 프로비저닝 프로파일이에요. What is 프로비저닝 프로파일? 프로비저닝 프로파일은 특정 디바이스에서 특정 앱을 실행할 수 있는 허가증입니다. 마치 출입증처럼 "이 사람(개발자)이 만든 이 앱(Bundle ID)을 이 기기(Device UUID)에서 실행해도 됩니다"라고 애플이 보증해주는 거죠 구성요소앱 ID (Bundle Identifier):..
근본으로 돌아가자(6) Image
·
iOS
이미지 형식과 기본 개념왜 이미지 처리가 중요할까?이미지 처리 최적화를 안 하면 어떻게 될까요? 메모리가 부족해서 앱이 강제 종료되거나, 스크롤이 버벅거리는 경험을 해보신 적 있으실 거예요.이미지의 두 가지 방식래스터 이미지 (Bitmap)픽셀로 이루어져 해상도가 고정되어 있어 확대 축소하면 품질 저하가 발생합니다. 대표적으로 JPEG, PNG, HEIF가 있어요.벡터 이미지 (Vector)수학적 좌표+기하학적 형태 기반이어서 계산을 통해 크기를 자유롭게 조정해도 품질이 같습니다. SVG, PDF가 대표적이죠.그렇다면 어떻게 구별해서 사용해야 할까?(PNG, JPEG, HEIF SVG)PNG 무손실 압축으로 이미지 품질이 유지됩니다투명도를 지원합니다아이콘이나 로고에 적합해요JPEG 손실 압축 방식을 사용..
근본으로 돌아가자(5) - 프로토콜
·
iOS
기본기 점검의 시작최근 현업 개발자분과 커피챗을 하면서 "기본기를 더 본다"는 말씀을 들었습니다.과연 제가 기본기가 충분한지 의문이 들어서 프로토콜부터 다시 파헤쳐보기로 했어요. 프로토콜을 그냥 "요구사항이 들어있는 청사진" 정도로만 알고 있었는데, 왜 프로토콜이라는 개념이 나왔는지부터 살펴보니 더 깊은 이해가 되더라고요.다중 상속의 딜레마왜 다중 상속이 문제가 될까? 🤔Objective-C는 동적 디스패치와 런타임에 의존하는 객체지향 언어로, 다중 상속을 지원하지 않았습니다.이로 인해 코드 재사용성과 확장성에 제약이 존재했죠.Swift가 왜 다중 상속을 지원하지 않는지 궁금했습니다. 바로 다이아몬드 문제 때문이에요.class A { /* ... */ };class B : virtual public A..