iOS
-
Key의 개념Swift의 KeyPath, KVC, KVO 자꾸나오는 Key의 개념은?문자열(Key)를 의미이 key값을 통해 instance의 property value에 간접적으로 접근하게 해주는 Objective-C에서 나온 개념KVC, KVO가 생기게 된 이유Objective - C로 개발하던 시절에는 MVC 패턴이 정답이라고 생각하던 시기MVC에서 가장 중요한것은 Model과 View의 Sync를 맞추는 일여기서 Controller는 2가지 역할을 수행하여야 함Model의 변화를 View에 반영View의 Interaction을 Model에 반영View나 Model에서 Action이 일어날 때마다 이 2가지 과정을 거쳐일일이 상태값을 업데이트 해주고 View와 Model을 동기화 해줘야하는 문제에 ..
[Swift] Key Value Coding(KVC), Key Value Observing(KVO)Key의 개념Swift의 KeyPath, KVC, KVO 자꾸나오는 Key의 개념은?문자열(Key)를 의미이 key값을 통해 instance의 property value에 간접적으로 접근하게 해주는 Objective-C에서 나온 개념KVC, KVO가 생기게 된 이유Objective - C로 개발하던 시절에는 MVC 패턴이 정답이라고 생각하던 시기MVC에서 가장 중요한것은 Model과 View의 Sync를 맞추는 일여기서 Controller는 2가지 역할을 수행하여야 함Model의 변화를 View에 반영View의 Interaction을 Model에 반영View나 Model에서 Action이 일어날 때마다 이 2가지 과정을 거쳐일일이 상태값을 업데이트 해주고 View와 Model을 동기화 해줘야하는 문제에 ..
2024.06.15 -
Responder Chain에서 나온 hitTest터치 이벤트에 반응한 View가 어떤것인지 알아보기 위해 필요한 것이 hitTestHitTest터치 이벤트가 발생한 포인트에 있는 view중 view hierarchy에서 가장 멀리 있는 하위 view즉 최상단의 view를 반환여기서 말하는 최상단의 View는 view hierarchy의 최상단 객체가 아니라사용자가 보았을 때 가장 상위의 View를 말함아래 사진에서 검은색 화살표 부분을 터치했을 때를 예시로 들면 ViewB를 말함hitTest가 필요한 이유hitTest를 사용하여 터치 이벤트를 받을 view를 정할 수 있다.ViewB의 hitTest를 사용하면 위 그림과 같이 ViewB를 터치했을 때 ViewB를 터치한 것이 아니라터치 이벤트가 발생한 ..
[iOS] HitTestResponder Chain에서 나온 hitTest터치 이벤트에 반응한 View가 어떤것인지 알아보기 위해 필요한 것이 hitTestHitTest터치 이벤트가 발생한 포인트에 있는 view중 view hierarchy에서 가장 멀리 있는 하위 view즉 최상단의 view를 반환여기서 말하는 최상단의 View는 view hierarchy의 최상단 객체가 아니라사용자가 보았을 때 가장 상위의 View를 말함아래 사진에서 검은색 화살표 부분을 터치했을 때를 예시로 들면 ViewB를 말함hitTest가 필요한 이유hitTest를 사용하여 터치 이벤트를 받을 view를 정할 수 있다.ViewB의 hitTest를 사용하면 위 그림과 같이 ViewB를 터치했을 때 ViewB를 터치한 것이 아니라터치 이벤트가 발생한 ..
2024.06.13 -
UIResponderAn abstract interface for responding to and handling events.이벤트의 응답 및 처리를 위한 추상 인터페이스 Responder objects(UIResponder의 인스턴스들)들은 UIKit 앱 이벤트 처리를 위한 backbone을 구성UIApplication, UIViewController, 및 모든 UIView(UIWindow포함)와 같은 많은 핵심객체들이 Responder이벤트가 발생하면 UIKit이 이 이벤트를 처리할 수 있도록 앱의 Responder objects에 전달 이벤트에는 여러종류가 있음touch events, motion events, remote-control events, press events 가 포함예를 들어 t..
[iOS] UIResponder, Responder Chain, First ResponderUIResponderAn abstract interface for responding to and handling events.이벤트의 응답 및 처리를 위한 추상 인터페이스 Responder objects(UIResponder의 인스턴스들)들은 UIKit 앱 이벤트 처리를 위한 backbone을 구성UIApplication, UIViewController, 및 모든 UIView(UIWindow포함)와 같은 많은 핵심객체들이 Responder이벤트가 발생하면 UIKit이 이 이벤트를 처리할 수 있도록 앱의 Responder objects에 전달 이벤트에는 여러종류가 있음touch events, motion events, remote-control events, press events 가 포함예를 들어 t..
2024.06.09 -
Libarary사용하는 주체가 기능을 요청하여 사용Framework사용하는 주체와 기능의 제어권이 역전테스트 불가능데모앱 가능독립적으로 빌드, 테스트가 가능한 세부모듈을 둘 수 없음Static Framework앱의 실행 파일 안에 복사앱 실행파일에 직접 복사되어 있으므로 런타임상 속도 빠름참조가 아닌 복사이므로 안정적dynamic에 비해 메모리 더 소모Framwork안에 이미지 파일과 같은 리소스 파일이 있어도 사용불가Dyanamic Framework런타임 상에서 Mach-O 파일과 참조관계Framework내에 이미지나 뷰같은 리소스 파일, Bundle을 Embed할 수 있음빌도속도 상승메모리 상 필요할 때 load시키므로 lazy함디버그시 필요한 dSYM파일을 프레임워크 개발자가 따로 제공해야함stat..
[iOS] 모듈화 Library, Framework, Package,Libarary사용하는 주체가 기능을 요청하여 사용Framework사용하는 주체와 기능의 제어권이 역전테스트 불가능데모앱 가능독립적으로 빌드, 테스트가 가능한 세부모듈을 둘 수 없음Static Framework앱의 실행 파일 안에 복사앱 실행파일에 직접 복사되어 있으므로 런타임상 속도 빠름참조가 아닌 복사이므로 안정적dynamic에 비해 메모리 더 소모Framwork안에 이미지 파일과 같은 리소스 파일이 있어도 사용불가Dyanamic Framework런타임 상에서 Mach-O 파일과 참조관계Framework내에 이미지나 뷰같은 리소스 파일, Bundle을 Embed할 수 있음빌도속도 상승메모리 상 필요할 때 load시키므로 lazy함디버그시 필요한 dSYM파일을 프레임워크 개발자가 따로 제공해야함stat..
2024.05.09 -
Concurrency(동시성) 프로그래밍 왜 동시성 프로그래밍인가 ?? 우리가 은행을 갔다고 해보자. 아래와 같이 은행원1에게만 고객이 줄을 선다고 하면 대기중인 고객은 자신의 앞에 있는 고객이 끝나기 전까지는 계속해서 기다려야 한다. 하지만 옆에 있는 은행원들 에게 고객을 분산시켜주면 아주 빠르게 고객들의 업무를 볼 수 있다. 즉 은행원1에게 쌓인 일을 분산시킨다면 고객들이 아무리 은행에 많이 와도 아주 빠르게 업무를 해결할 수 있는것이다. 즉 우리는 지금까지 작성한 코드들은 위와 같이 은행원1(메인스레드) 에게만 일을 맡겼던 것이다. func Task1() { ... } func Task2() { ... } func Task3() { ... } Task1() Task2() Task3() Task를 어..
[Swift] GCD, Async/Sync 알아보기 비동기(Asynchronous)란 말과 Concurrency(동시성)란 말이 같은 말인가?Concurrency(동시성) 프로그래밍 왜 동시성 프로그래밍인가 ?? 우리가 은행을 갔다고 해보자. 아래와 같이 은행원1에게만 고객이 줄을 선다고 하면 대기중인 고객은 자신의 앞에 있는 고객이 끝나기 전까지는 계속해서 기다려야 한다. 하지만 옆에 있는 은행원들 에게 고객을 분산시켜주면 아주 빠르게 고객들의 업무를 볼 수 있다. 즉 은행원1에게 쌓인 일을 분산시킨다면 고객들이 아무리 은행에 많이 와도 아주 빠르게 업무를 해결할 수 있는것이다. 즉 우리는 지금까지 작성한 코드들은 위와 같이 은행원1(메인스레드) 에게만 일을 맡겼던 것이다. func Task1() { ... } func Task2() { ... } func Task3() { ... } Task1() Task2() Task3() Task를 어..
2024.01.22 -
왜 RxSwift가 나오게 되었는지 또 RxSwift가 어떤 원리인지 알아봅시다.비동기 함수의 콜백지옥아래는 swift에서 json을 다운로드 하는 함수입니다.func downloadJson(_ url: String, _ completion: ((String?) -> Void)?) { DispatchQueue.global().async { let url = URL(string: url)! let data = try! Data(contentsOf: url) let json = String(data: data, encoding: .utf8) DispatchQueue.main.async { completion?(json) ..
[Swift] RxSwift, Combine 원리 이해하기왜 RxSwift가 나오게 되었는지 또 RxSwift가 어떤 원리인지 알아봅시다.비동기 함수의 콜백지옥아래는 swift에서 json을 다운로드 하는 함수입니다.func downloadJson(_ url: String, _ completion: ((String?) -> Void)?) { DispatchQueue.global().async { let url = URL(string: url)! let data = try! Data(contentsOf: url) let json = String(data: data, encoding: .utf8) DispatchQueue.main.async { completion?(json) ..
2024.01.20 -
정규 표현식 규칙 숫자 [0-9] \d 숫자가 아닌 문자 \D 문자(숫자, 글자 모두 포함) \w 한글 [가-힣] : 한글 모두 영어 [A-Z] : 대문자 [a-z] : 소문자 [A-Za-z] : 대소문자 모두 문자매칭 : 앞의 문자가 0번 이상 반복 : 앞의 문자가 1번 이상 반복 ? : 0 or 1개의 문자 매칭 . : 1개의 문자 매칭 시작과 끝 ^* : *로 시작 *$ : *로 끝난다 공백 \r\n : 줄바꿈 \s : 공백(space) \t : tab \f : form feed 특수문자 [!@#$%^&*()-=+] = 특수문자 특수기호 swift에서는 특수기호 앞에 **\**가 붙어야한다 \. == . \\ == \ 조건문 | : or 정규표현식 예시 [0-9]* : 숫자가 1개 이상 0, 01,..
[Swift] 정규표현식정규 표현식 규칙 숫자 [0-9] \d 숫자가 아닌 문자 \D 문자(숫자, 글자 모두 포함) \w 한글 [가-힣] : 한글 모두 영어 [A-Z] : 대문자 [a-z] : 소문자 [A-Za-z] : 대소문자 모두 문자매칭 : 앞의 문자가 0번 이상 반복 : 앞의 문자가 1번 이상 반복 ? : 0 or 1개의 문자 매칭 . : 1개의 문자 매칭 시작과 끝 ^* : *로 시작 *$ : *로 끝난다 공백 \r\n : 줄바꿈 \s : 공백(space) \t : tab \f : form feed 특수문자 [!@#$%^&*()-=+] = 특수문자 특수기호 swift에서는 특수기호 앞에 **\**가 붙어야한다 \. == . \\ == \ 조건문 | : or 정규표현식 예시 [0-9]* : 숫자가 1개 이상 0, 01,..
2024.01.12 -
Xcode의 파일 인스펙터 영역에서 파일의 확장자명을 보이게 또는 숨겨보자 Xcode -> Setting -> File Extensions 에서 설정해주면 된다 Hide All : 확장자명 전부 숨기기 Show All : 확장자명 전부 보이기 Show Listed : 보이게 할 확장자명 입력 Hide Listed : 숨기게 할 확장자명 입력 참고로 파일이름이 길어서 파일 인스펙터에 전부 표시될 수 없을 때 확장자명을 숨기면 가운데가 ... 으로 보이고 확장자명을 보이게하면 끝쪽이 ... 으로 보인다
Xcode 파일 인스펙터 확장자명 보이기/숨기기Xcode의 파일 인스펙터 영역에서 파일의 확장자명을 보이게 또는 숨겨보자 Xcode -> Setting -> File Extensions 에서 설정해주면 된다 Hide All : 확장자명 전부 숨기기 Show All : 확장자명 전부 보이기 Show Listed : 보이게 할 확장자명 입력 Hide Listed : 숨기게 할 확장자명 입력 참고로 파일이름이 길어서 파일 인스펙터에 전부 표시될 수 없을 때 확장자명을 숨기면 가운데가 ... 으로 보이고 확장자명을 보이게하면 끝쪽이 ... 으로 보인다
2024.01.07