본문 바로가기

분류 전체보기

(139)
멀티윈도우 지원하는 앱 만들기 - iOS Multiple windows 지원하는 앱 만들기 생각보다 무척 간단합니다. (코드로 커스터마이징 하는 건 좀 복잡하지만 ㅎㅎ) 프로젝트 설정에서 Supports multiple windows 체크하면 됩니다. 앱을 실행시키고 위의 + 버튼을 누르면 UIScene이 한개가 더 생성됩니다. 멀티윈도우 만들기 진짜 간단하죠? 🥰 그런데 아이패드에서 맨날 저 버튼을 눌러서 창을 한개 더 만드는건 너무 불편하잖아요? 그래서 사용자가 편하도록 위 앱의 사진 하나를 드래그 해서 좌우측 끝에 드롭하면 창을 하나 더 만들도록 해보겠습니다. 완성본 UI 만들기 우선 UI를 먼저 완성 시키고 가겠습니다. 아래 그림처럼 스토리보드를 만들어 주세요. 그 다음 CollectionView Cell을 만들어 줘야겠죠? 저는 xi..
앱이 In - active 상태가 되는 시나리오 - Swift Not running 앱이 실행되지 않았거나 완전히 종료되었을 때 상태입니다. In-active(비활성화) 앱이 실행되면서 포어그라운드에 진입하지만 어떠한 이벤트도 받지 않는 상태입니다. Active(활성화) 앱이 실행 중이며 포어그라운드에 있고 이벤트를 받고 있는 상태입니다. Background 앱이 백그라운드에 있으며 다른 앱으로 전환되었거나 홈버튼을 눌러 밖으로 나갔을 때의 상태입니다. Suspended : 백그라운드에서 특별한 작업이 없을 경우 전환되는 상태입니다. 시나리오 다른 상태로 넘어가기 전에 앱은 반드시 이 상태를 거침 전화나 메시지 같은 interrupt 발생 시 미리알림 같은 특정 알림창이 화면을 덮어서 앱이 실질적으로 event를 받지 못하는 상태 등이 여기에 해당 실험 방법 > S..
SceneDelegate 란? SceneDelegate란? iOS13 이후 UI 생명주기에 관한 이벤트를 처리하기 위해 사용하는 객체입니다. 앱을 실행하면 UIKit이 일반적으로 UIScene의 서브클래스인 UIWindowScene 객체를 생성합니다. UIWindowScene는 UI의 State를 가지고 있습니다. UI State에 따른 이벤트를 처리하기 위해 UIWindowSceneDelegate 프로토콜을 만들었고 구체적인 내용을 class인 SceneDelegate에다가 프로토콜을 채택하여 정의할 수 있습니다. 즉, SceneDelegate란 UI 상태에 따른 이벤트처리를 하기 위한 객체입니다. iOS 13 에서의 변화 iOS 13 이전 iOS 13 이후 SceneDelegate의 역할 iOS13 이전 iOS13 이후 AppDe..
MVC와 MVVM의 차이점 및 장단점 MVC란? Model View Controller의 약자로, 코드를 구성할 때 각각의 역할에 따라 코딩하는 디자인 패턴입니다. Model 응용 프로그램에 특정한 데이터를 캡슐화하고 해당 데이터를 조작하고 처리하는 논리와 계산을 정의 View 콘텐츠를 보여주는 화면 Controller 뷰 객체와 하나 이상의 모델 객체 사이에서 중개자 역할 사용자의 이벤트에 따라 모델 객체 또는 뷰를 변화시킴 MVVM이란? Model View ViewModel의 약자로, 코드를 구성할 때 각각의 역할에 따라 코딩하는 디자인 패턴입니다. Model 응용 프로그램에 특정한 데이터를 캡슐화하고 해당 데이터를 조작하고 처리하는 논리와 계산을 정의 View 사용자에게 콘텐츠를 보여주는 화면 ViewModel 뷰모델은 모델의 데이터를..
Optional 이란? Optional 이란? 변수의 값이 nil 일수도 있다는 것을 표현하기 위해 사용합니다. Swift에서의 nil 이란 value가 없는 것을 의미합니다. 다른 언어에서처럼 포인터가 없다거나 그런 의미는 아닙니다. 사용법 var optionalInt: Int? = nil var nonOptionalInt: Int = nil // error print(optionalInt) //Optional(nil) //옵셔널 타입에 값을 넣으면? optionalInt = 3 print(optionalInt) //Optional(3) 그렇다면 optionalInt + nonOptionalInt 는 가능할까요? 불가능 합니다. optionalInt는 Optional로 한번 wrapping 되어 있기 때문에 Value of ..
Hashable Swift 4.1 전 과 후 Hashable 4.1 버전 전 과 후 저는 Swift 4.1버전이하에서 hashValue() 에서 XOR 연산으로 숫자(ex) 16777619), 해쉬값 합치던것을 Swift 4.1이후에는 combine(난수에다가 해쉬값 합치기) 으로 바꾼 것이라고 생각합니다. 너무 당연한가요..? 일단 제가 그렇게 생각한 이유는 옛날코드와 바뀐코드에서의 차이점이 그것뿐 이어서 그렇습니다. // Swift 4.1 ver 이하 Hashable 작업 struct GridPoint { var x: Int var y: Int } extension GridPoint: Hashable { var hashValue: Int { return x.hashValue ^ y.hashValue &\* 16777619 } static fun..
[자료구조] HashTable 이란? HashTable이란? (key, value)로 데이터를 저장하는 자료구조 중 하나입니다. 왜 사용해? 빠른 속도로 데이터를 검색하기 위해 사용합니다. 왜 빠른지에 대해서 배열과 비교해서 설명하겠습니다. [1,2,3,4,3] 에서 3의 갯수를 알려면 배열전부를 돌아서 찾아야합니다. 따라서 시간 복잡도는 O(n)이 됩니다. 그러나 해쉬테이블에 저장한다면? key value 1 1개 2 1개 3 2개 4 1개 var hashTable : [Int : Int] = [1 : 1, 2 : 1, 3 : 2, 4: 1] key 값들 (1, 2, 3, 4) 중에 3을 찾아서 hashTable[3] = 2 를 찾는 것이 아니라 한방에 key값이 3인 곳을 찾아갑니다. 따라서 시간복잡도는 O(1) 입니다. 어떻게 빠르게 ..
[Hash] Rabbits in Forest - LeetCode Swift 문제 : https://leetcode.com/problems/rabbits-in-forest/ Rabbits in Forest - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이방법 value % (key + 1) == 1 일 때, result에 key + 1(자신) 을 해준다. 첫번째 예시 answers : [1] -> 1 % (1+1) == 1 이니까 result에 + 2 두번째 예시 answers : [1, 1] -> dic[1: 1] 일 때 -> 1..