일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- 인프런
- 알고리즘
- IOS
- protocol 기본구현
- Unreal static Framework
- 깃허브
- github
- Swift
- Unreal iOS
- 깃 명령어
- new int
- PS
- unreal dynamic framework
- Problem Solving
- embed&sign
- 깃허브 사용법
- Cpp
- Git
- 동적할당
- 백준
- Algorithm
- git status
- ios framework
- 깃허브 가이드
- Unreal iOS Framework
- C++
- 깃헙
- where Self
- 리눅스 명령어
- 2차원배열
- Today
- Total
목록IOS (8)
Get Up & Code, MacKin Talk
일부 Delegate 등 시스템 제공 API를 몇 가지만 둘러보더라도 @available 과 같은 속성이 정의된 메소드들을 많이 접할 수 있습니다. Xcode를 통해 개발을 하는 경우, @available 속성을 통해 특정 클래스, 메서드, 프로퍼티 또는 기타 코드 구성 요소의 사용 가능한 플랫폼 버전을 명시적으로 표시할 수 있으며, API의 버전 관리를 보다 세밀하게 제어하고, 버전 호환성을 지켜줄 수 있습니다. 함수 위에서 @available을 작성하면, Xcode IDE의 도움을 받아 선택적으로 해당 속성을 지정할 수 있습니다. @available(, introduced: , deprecated: , message: ) 플랫폼, 도입 버전, 폐지 버전, 등 여러 가지를 나타낼 수 있습니다. //..
일반적인 iOS App을 개발할 때, SPM이나, Cocoapod 등의 의존성 관리도구를 많이 사용하듯 게임 엔진도 비슷합니다. 기능 중 일부 기능을 3rd나 오픈 소스 등 외부 소스를 사용해 기능 구현에 사용합니다. 라이브러리 또는 프레임워크라 불리는 형태로 타겟 앱에 추가하죠. Unreal Engine을 통해서 나오는 ipa 파일도 결국은 Xcode를 통해 나오는 결과물과 별반 다르지 않다는 점에서 결과물이 비슷하다는 건 인풋도 비슷하다는 거 아닐까요. 물론 내부의 실행파일의 구조 등은 일부 다르지만요. 일반 Swift로 작성된 iOS 앱과 다른 점이라고 한다면 Unreal Engine에서는 iOS Framework를 적용하기 위해서 Framework를 적용하기 위한 Build.cs 를 작성하고, i..
프로토콜과 그 기본 구현을 활용해 중복을 피할 수 있다. Swift에서는 프로토콜의 익스텐션을 활용할 때 where 절을 사용해 타입 지정 방법을 제공 해당 익스텐션이 적용될 수 있는 타입의 범위를 제한할 수 있도록 해준다. 예시로 extension AProtocol { // methods... } 프로토콜을 정의할 때 특별한 타입 제약을 지정하지 않은 경우, 그 프로토콜은 어떤 타입에서든 채택할 수 있음. - 클래스, 구조체, 열거형 등 extension AProtocol where Self: UIView { // methods... } 특정 타입에만 프로토콜을 적용하고 싶은 경우 where Self: UIView Aprotocol을 확장하되, 그 확장의 범위는 UIView의 서브 클래스인 타입에만 ..
서드파티 로그인 또는 앱간인증을 진행하다보면 info.plist 파일에 상단 키워드들을 작성하게 된다. 둘 모두 개발중인 앱이 다른 앱과의 상호 작용을 위해 사용하는 URL 스킴을 정의하나, 이 둘은 사용 목적과 방식에서 차이가 있다. 1. CFBundleURLSchemes(외부에서 호출될 현재 앱의 URL Scheme) 앱이 외부에서 호출될 수 있는 URL Scheme을 정의. 이 설정을 통해 앱은 다른 앱이나 웹 페이지로부터 특정 URL Scheme을 사용하여 직접 호출될 수 있다. 예를 들어, "luyan://" URL Scheme을 앱에 설정하면, 다른 앱이나 브라우저에서 이 URL을 호출하여 현재 앱을 열 수 있습니다. CFBundleURLSchemes를 사용하면 앱은 외부 요청을 받아 특정 ..
앱 개발하는 과정에서 대부분 혼자만의 코드로만 프로젝트를 구성하지 않습니다. Github 등 오픈소스나 유료 소스를 바탕으로 특정 기능에 대한 구현을 빌리는 경우가 많습니다. 다수에 의해 검증된 코드들이 많다보니 직접 코드를 구성하는 것보다 성능이 좋은 경우도 많습니다. 이렇듯 외부에 의존성을 두게 되면 일반적으로는 코코아팟 cocoapod, 카르타고, spm 등 의존성 관리도구를 활용하게 됩니다. 일반적으로는 외부 소스나 프레임워크의 사용에 에러나 큰 문제가 없겠지만, 해당 프레임워크가 dynamic framework로 제공되는 경우, 하단과 같은 에러를 만나기도 합니다. dyld: Library not loaded: 뭐. 말 그대로 라이브러리가 로드되지 않았다는 뜻이겠죠. 해당 키워드의 원인은 여러 ..
목차 1) iOS ~16.0 2) iOS 16.0 < (version) 3) 기타 참고 1) iOS ~16.0 일반적으로 iOS Device의 Screen Size를 얻기 위해서 다음과 같은 로직을 많이 써왔다. UIScreen.main.bounds.size.height UIScreen.main.bounds.size.width 코드 작업 중 Xcode IDE에 의해 main이 deprecated 될 거라는 경고문을 안내받았다. 경고문에 안내하듯 Context에 의해 찾아진 UIScreen 인스턴스로 대체하라는 방식대로 코드를 작성하라고 안내하고 있다. ex) view.window.windowScene.screen 2) iOS 16.0 < (version) StackOver Flow에서 관련된 질의글을 찾..
CocoaPods => Swift 및 Objective-C Cocoa 프로젝트 종속성 관리자 타 의존성 관리도구로 카르타고나 spm(swift package manager)이 있다. 이 중 spm은 Apple에서 지원해주는 First Party에 해당한다. 하지만 아직은 SPM을 지원하지 않는 많은 라이브러리들이 있기 때문에 SPM이 아닌 cocoapods도 필요하다고 판단이 되어 도입하였다. 하단 페이지에도 설명되어 있지만, 설치 방법은 간단하다. sudo gem install cocoapods 터미널 창을 열고, cocoapods 설치를 위한 명령어를 실행하면 된다. 대표사진 삭제 사진 설명을 입력하세요. Password를 입력하고 나면 위와 같은 ~ 1 gem installed로 끝나게 되고, co..
문항번호: 1931번 회의실 배정 tags: problem solving 1. 문제 분석 목표: 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수 찾기 2. 풀이 계획 입력 제한 : N(1 ≤ N ≤ 100,000) 시간 제한 : 2초 생각한 방향 최대한 회의를 많이 하기 위해서는 가급적 빠른 시간에 끝나는 회의를 선택하는 방법을 선택해야한다. 빠른 시간에 끝나는 회의임을 찾기 위한 정렬 과정이 요구된다. -> sort() 메서드 사용 추가로 다음에 시작할 수 있는 회의는 현재의 종료시간 이후이거나 같은 값을 가져야 한다. -> if 조건문 3. 계획 검증 시간 복잡도 예상 : 최대 100,000개의 데이터가 들어온다고 가정했을 때, Swift에서 제공하는 sort 함수의 시간복잡..