- 근본으로돌아가자(7)-String,Array으로 시작해서 Sequence까지2료일자 우리가 일반적으로 사용하는 String은 Character로 이루어져있고 Character는 가변적인 하나이상의 유니코드스칼라로 이루어져 배열처럼 정수 인덱스로 접근할수 없다. 그래서 String.index를 사용하고 startIndex, endIndex, index(after:)같은 메서드로 안전하게 탐색한다. 특히 이모지의 경우 여러 유니코드 스칼라로 구성된다. 퀴즈: 👍? => U+1F44D인 단일유니코드스칼라.let emoji = "👩🚀"for scalar in emoji.unicodeScalars { print(scalar)}// 출력:// U+1F469(👩)// U+200D// U+1F680(🚀)여기까지가 면접의 단골질문이자 당연히 알아야하는 것입니다. 물론 아닐수도..? ..
- 2025-04-04 15:49:58
- Metal(2)-셰이더 코드 작성까지2료일이전 글에서 메탈이란 GPU에 접근하여 빠른 그래픽 처리를 가능하게 해주는 저수준 API라는 것을 학습했다. 즉 Spiritekit, Animation 밑의 있는 것!! 이번엔 그래서 메탈이 어떻게 렌더링을 하는지 살펴볼 계획입니다. 렌더링 프로세스Metal은 '초기화 단계'와 '렌더 패스 단계'로 나뉜다.초기화 단계(앱 수명주기와 함께하는 객체들)MTLDevicelet device = MTLCreateSystemDefaultDevice()모든 Metal 객체 생성의 시작점. 물리적 GPU를 추상화한 인터페이스라고 보면 된다. MTLCommandQueuelet commandQueue = device.makeCommandQueue()GPU에 보낼 명령들을 순서대로 관리하는 대기열. 실제로 여러 프레임의 렌..
- 2025-04-02 23:54:29
- Metal(1)- 메탈을 알기전에 필요한 것들2료일갑자기 왠 뜬끔없이 메탈일까? 그래픽관련 공부를 해야할 계기가 생겼고 이것또한 하나의 기회라고 생각하여 블로그에 정리하며 자세히 공부를 하려합니다. 아주아주 예전에 AR쪽하면서인가(?) metal관련 봤던것 같은데 기억이 안나서 아예 리뉴얼 해서 정리해볼게요~ 컴퓨터 아키텍처의 기초CPU: 모든 계산과 논리연산 처리하는 "두뇌"- ALU: 수학적 연산과 논리 연산 수행- 제어장치: 명령어 해석 및 실행 순서 결정- 레지스터: 고속 임시데이터저장- 캐시메모리: 자주 사용되는 데이터와 명령어 저장GPU: 원래 그래픽 처리를 위해 설계되었으나, 현재는 병렬 컴퓨팅의 핵심 요소로 확장- 병렬처리 능력: 동일한 연산을 여러 데이터에 동시 적용- 그래픽 렌더링: 3D 모델링, 텍스처 매핑, 쉐이딩 처리- 범용컴퓨팅..
- 2025-03-29 20:57:13
- Autolayout 모든 것: 사이클부터 제약조건까지2료일오토레이아웃이란?iOS 및 macOS에서 UI요소의 위치와 크기를 동적으로 관리하는 시스템: SuperView 크기가 변경되면, Constraints로 잡혀있는 값을 기준으로 본인의 크기를 적절하게 변화시키는 것입니다.레이아웃 업데이트 사이클Autolayout은 크게 3가지 레이아웃 처리 과정을 통해 화면을 그립니다.1. Update Constraints메서드가 호출되며 기존 제약 조건을 갱신하거나 새로운 제약조건을 추가하는 로직 수행2. Layout 계산: layoutSubviews 메서드가 호출되며 업데이트된 제약 조건을 바탕으로 실제 프레임 계산3. Display: draw 메서드 호출되어 계산된 프레임에 따라 화면이 그려진다.이 사이클은 엄격히 순차적으로 매번 실행되는 것이 아닌 UIKit 뷰 업..
- 2025-03-26 20:17:35
- Apple의 보안2료일오늘은 외부에서 어떻게 신뢰할수 있는 앱을 다운받을 수 있는지와 그러더라도 앱을 다운받았지만 해킹프로그램이 있을때 어떻게 보안을 하는지에 대해 얘기해볼것이다.프로비저닝 프로파일애플에서 어떠한 앱을 다운받기 위해서는 AppStore를 통해야한다. 즉 신뢰할 수 있는 앱만 실행할 수 있도록 되어있다.신뢰할 수 있어? = 그 개발자 신뢰 가능? 이라고 보면된다. 앱스토어 말고 우리는 앱을 깃허브 클론이나 다른 방식으로 받을 수 있다.프로비저닝 프로파일이 디바이스가 특정 개발자의 앱을 신뢰하고 실행할 수 있게 해준다. 구성요소: 앱 ID(bundle), 앱 실행이 허용된 디바이스 UUID, 인증서, 권한(푸쉬알림 등)프로비저닝 프로파일 종류1. Development: 개발 및 디버깅을 위한 프로필. 등록된 개발..
- 2025-03-15 02:11:56
- 근본으로 돌아가자(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
- 근본으로 돌아가자(5) - 프로토콜2료일오랜만에 근본 시리즈다. 그 이유는 좋은 기회로 IOS 현업에 계신 개발자분과 커피챗을 한 결과 오히려 더 기본기를 본다고 한다. 나는 기본기가 충분한가? 기본기가 충분해서 다양한 Kit들을 쓰고 아키텍처를 공부하는가? 모르겟다 그래서 프로토콜에 대해 다시 정리해보려합니다프로토콜: 요구사항이 들어있는 청사진 뭐 그냥 인터페이스?뭐 이정도는 이제 올라온 1학년 개발자도 말할 수준이다. 먼저 왜 프로토콜이 나왔는지부터 살펴보자.등장 배경다중 상속의 문제Objective-C는 동적 디스패치와 런타임에 의존하는 객체지향 언어로, 다중 상속 X. 코드 재사용성과 확장성에 제약이 존재.왜 그러면 다중 상속이 안될까? 다이아몬드 문제: A클래스를 B,C가 상속받고 D가 B,C를 상속받아 A 메서드 호출할때 어떤 경로..
- 2025-03-03 12:39:04
- Dynamic Dispatch는 어떻게 이루어지는가? 클래스 VS 프로토콜2료일사실 이게 첫번째 글이 아니에요. 프로토콜은 어떻게 동작하고 채택당한놈은 어떻게 알고 필수 메서드들을 구현하라고 컴파일 에러가 뜨는지 궁금했던 저는 더 나아가 프로토콜을 채택한 다양한 타입들이 같은 배열에 들어갔을 때, 어떻게 각각 올바른 메서드를 호출할 수 있을까?. 꼬꼬무하다보니 여기까지 왔습니다..쫌 어려웠어여. 주에 한번씩 복습할예정!! 들어가보자~잇!Dynmaic Dispatch정적 디스패치와 달리 런타임에 호출할 메서드가 결정되는 것입니다소스코드를 파싱하여 AST트리를 생성하고 의미분석하여 타입검사하고 중간언어인 SIL로 변환되는데 여기서 정적/동적 디스패치가 결정Virtual Tablefinal 키워드가 붙지 않은 클래스는 상속이 가능하기에 dynmaic Dispatch가 이루어진다.. 런타..
- 2025-03-02 21:11:24
- 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
- 함수형 프로그래밍 & 명령형과 (유킷 스유)2료일뭐 우리가 UIKit이나 SwiftUI를 공부하다보면 UIKit은 명령형 프로그래밍이였는데 SwiftUI는 선언형 프로그래밍이라 짱짱 편해요~!! 🤔 음. 그러면 왜 명령형보다 선언형을 좋아하시나요?먼저 프로그래밍 패러다임이 뭔지부터 알아야한다. :) 프로그래머들이 프로그램을 바라보는 관점 👀명령형 프로그래밍프로그램의 상태(state)와 그 상태를 변경시키는 구문(statements)의 관점으로 접근한다. 프로그램은 실행할 명령들을 실행할 순서로 작성한다. 대부분의 객체지향이 속한다. 우리가 알고리즘을 풀 때 사용하는 방식이 명령형 프로그램이다. func permutation(_ arrs: [T]) -> [[T]] { var result = [[T]]() var check = [Bool](..
- 2025-02-16 17:56:00
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)