목록iOS Technologies (7)
문제가 되는 코드guard let navigationBar = navigationController?.navigationBar else { return }navigationBar.addSubview(navigationProgressView)navigationProgressView.snp.makeConstraints { let margins = navigationBar.layoutMarginsGuide $0.leading.equalTo(margins).offset(60) $0.trailing.equalTo(margins).offset(-75) $0.centerY.equalToSuperview() $0.height.equalTo(8)}✔ 왜 이런 현상이 생길까?Navigation Bar는 push ..
왜 Sandbox 라고 부를까?애플의 경우 기술 개념을 추항화 할때 보통 고유 명사로 설명하는 방식을 선호하는 것 같다.App SandBox 역시 sandbox (n.) = 모래상자, 모래밭모래 상자안에서만 놀수 있다는 물리적인 비유로 그 밖의 공간에는 손댈수 없다는 은유적인 표현이다.앱(macOS, iOS .. 등등)이 시스템 리소스에 제한된 범위 내에서만 작동하여 시스템 훼손을 원천 차단해버린다.Sandbox 구조눈으로 보는게 아무래도 더 기억에 남기때문에 직접 파악해보자아무 앱을 시뮬레이터로 빌드 시켜본 후시뮬레이터는 Xcode에서 Widnow/Devices and Simulators 에서 Identifier를 확인할 수 있다.~/Library/Developer/CoreSimulator/Device..
배경 과 문제 정의현재 진행중인 알쏭달쏭 프로젝트에서는 Tuist같은 모듈을 관리해주는 도구를 사용하지 않고, Xcode에서 지원해주는 Workspace를 사용하여 Projects 그룹화하여 관리한다.Tuist를 사용하기에는 짧은 기간 내에 개발을 완벽하게 이해하고있는 상황이 아니였기 때문에 Workspace로 결정하여 개발을하게 되었다.결합도를 줄이기 위해서 큰 기능에 따라 뷰와 데이터, 네트워크를 하는 모듈을 분리하여 작업을 진행하였는데메인 앱에 통합시키는 과정에서 시뮬레이터에서는 빌드가 잘 되었지만, 앱을 배포했을 때 크래시가 발생하는 문제가 발생하였다.해결 과정문제는 dyld 이슈인 것으로 추정된다.dyld란 Dynamic loader/linker 로 앱이 실행될 때 필요한 동적 라이브러리를 찾아..
전체 빌드 타이밍 출력xcodebuild \ -workspace "App명".xcworkspace \ -scheme "Scheme명" \ -configuration "Debug/Release중 선택" \ -destination 'generic/platform=iOS' \ build \ -showBuildTimingSummary포메팅 해서 보는 방법TIMEFORMAT=$'\n⏱ Total build time: %3R seconds'time xcodebuild \ -workspace "App명".xcworkspace \ -scheme "Scheme명" \ -configuration Debug \ -destination 'generic/platform=iOS' \ build > /dev/..
악의적인 코드로부터 앱을 보호하기 위해 Apple은 거의 모든 기기의 샌드박스에 앱을 배치합니다.각 샌드박스에는 해당 앱만 접근할 수 있는 컨테이너 디렉터리가 있습니다.생성한 두 앱 간 또는 앱과 앱 익스텐션 간에 파일 공유하기 위해서 두 프로세스 모두에 앱 그룹을 구성해야합니다.적절한 권한이 있는 프로세스는 앱 그룹 디렉터리의 URL을 요청하고, 해당 디렉터리의 파일에 접근할 수 있습니다. 앱 그룹을 생성하면 여러 프로세스가 파일을 공유할 수 있는 디스크 공유 공간이 생성됩니다.또한 Mach IPC, POSIX 세마포어 및 공유 메모리, UNIX 도메인 소켓, 기타 IPC 메커니즘을 사용하여 프로세스 간의 추가정인 프로세스 간 통신(IPC) 이 가능합니다. 즉, 직접 메모리 공유는 불가하고, App G..
1. App Extension이란?앱의 기능을 시스템 전역으로 확장해 주는 모듈형 바이너리호스트 앱과 분리된 프로세스로 실행되어 보안·안정성을 확보하나의 “확장 가능한 시스템 영역”을 Extension Point라고 부르며, OS가 각 포인트마다 전용 API·가이드(정책)를 제공2. 앱 확장 프로그램 유형https://developer.apple.com/app-extensions/ App Extensions - Apple DeveloperApp extensions let you extend custom functionality and content beyond your app and make it available to users while they’re interacting with other apps..
안녕하세요, iOS 개발자 SJRespect 입니다.일반적인 웹 프론트엔드와 비교했을 때, 모바일 환경에서의 매력 중 하나는 다양한 센서와 터치 기반 이벤트의 존재입니다. 오늘은 일반적으로 iOS에서 터치 이벤트를 처리할 때 사용하는 UIResponder, UIEvent , UITouch 가 UIKit에서 내부적으로 어떻게 동작하는지에 대해 확실히 알아보고 싶어 글을 작성해보려고 합니다.시작 해 보겠습니다 !우선 어플리케이션을 실행 할 때, UIKit에서는 Appdelegate에 @main 에서 UIApplicationMain 을 동작시킵니다. 이 때, 2개의 쓰레드 main run loop와 main event loop 를 통해 입력 이벤트를 대기하고 처리합니다.UIApplication | Apple ..