Swift
-
Protocol에서 Optional 선언iOS 2020. 3. 4. 16:06
protocol에서 optioanl 을 사용하면 다음과 같은 오류를 만나게 됩니다. 'optional' can only be applied to members of an @objc protocol Swift document를 보면, Swift는 optional을 사용하려면 반드시 @objc 를 붙여주라고 하고 있네요, class는 Objective-C 를 상속받거나 @objc가 붙은 클래스에서만 사용이 가능하니 당연히 struct나 enum에서는 사용할 수 없겠죠? swift는 protocol에서 optioanl을 지원하지 않으니, 대신 @objc 를 지원하는 @objc 를 사용하는 것이 가장 쉬운 방법이 되겠습니다. @objc protocol CounterDataSource { @objc optiona..
-
StackComputer Science/DataStructure 2020. 3. 3. 14:54
- 선형 자료구조 - LIFO (후입선출) 선형 자료구조의 일종. Last In First Out (LIFO) 방식으로, 나중에 들어온(push) 원소가 먼저 나온다.(pop) 접시를 위로 쌓아놓은 형태를 떠올리면 쉽다. 따라서 스택의 앞에 원소를 넣는 것은 O(n)이고 스택의 뒤에 추가하는 것은 O(1)의 시간복잡도를 갖는다. 참고로 CPU는 function 이나 method의 return 주소를 스택에 넣는데, 재귀 함수 등과 같이 함수가 종료되기 전에 너무 많은 함수를 호출해 CPU의 스택이 부족해지면 "stack over flow"가 발생한다. Implement Swift는 사실상 내부적으로 Stack을 이미 지원하고 있다고 볼 수 있다. public struct Stack { fileprivat..
-
포토샵, 일러스트 웹, 앱용 이미지 @2x @3x 변환iOS 2020. 3. 3. 00:12
안녕하세요. 오늘은 제가 겪었던 문제와 실험(?)에 대해 포스팅해보려고 합니다. 혹시 제목을 보고 포토샵, 일러스트 웹, 앱용 이미지 @2x @3x 변환 방법이 궁금하셔서 오셨다면 포토샵, 일러 를 참고하시면 될 것 같아요 :) 포토샵, 일러 등에서는 이미지의 크기를 자동으로 키워주는 기능을 제공하고 있습니다. 그런데!!!!! 그렇게 해서 이미지를 변환시켰을 경우 Assets.xcassets 의 프리뷰로 보면 크기가 다 똑같아 보이는 현상을 겪었습니다. 이렇게 말이죠... 크기가 다 동일하게 보여요 ... 😢 어도비에서 제공하는 기능을 사용하지 않고 일일이 크기를 2배, 3배 키워주면 제대로 보이는데 말이죠... 이렇게 잘 나오는데 ㅠㅠㅠㅠㅠ 뭐가 문제인지 한참 찾아보았으나... 답은 찾을 수가 없었습니..
-
iOS) simulator에서 API erroriOS 2020. 3. 1. 20:48
Error log API error: returned 0 width, assuming UIViewNoIntrinsicMetric keyboard datePicker를 view.endEditing(true) 를 통해서 닫지 않고 바깥 화면을 클릭해서 닫았을 경우 에러 발생었습니다. 아마 simulator를 사용할 경우 발생할텐데 Hardware -> Keyboard -> Toggle Software Keyboard 다음 방법으로 해결하였습니다. :)
-
iOS) Realm Numeric OptionaliOS 2020. 2. 28. 09:06
Property cannot be marked @objc because its type cannot be represented in Objective-C 다음과 같은 에러가 발생한다면 숫자를 optional로 생성하려고 한 것은 아닌지 확인해보셔야 합니다. String, Date, Date는 표준 Swift 문법을 따르면되지만, Int, double과 같은 numeric 타입들은 단순히 Int? Double? 와 같은 optional 타입으로 하면 안되고 RealmOptional() 타입을 사용해서 RealmOptional 변수의 value 프로퍼티를 이용해야합니다. 그리고 @objc dynamic var 가 아니라 let 을 사용합니다. realm document 에는 다음과 같이 나와있습니다. Req..
-
iOS) Storyboard 없이 개발하기2 (iOS13 개정판)iOS 2020. 2. 10. 14:52
안녕하세요! 삼쓰입니다. 예전에 storyboard 없이 개발하기 라는 포스팅을 했었는데요. iOS13이 되면서 SceneDelegate 라는 녀석이 새롭게 추가되면서 방법이 아주조금 바뀌었습니다. SceneDelegate라는 녀석이 어떤 녀석인지부터 알면 좋겠지만 다음에 포스팅해보기로 하구요! 사실 SceneDelegate를 쓰지 않는다면 뭔지 몰라도 크게 문제는 없기 때문에... 오늘은 속성으로 SceneDelegate가 추가된 상황에서 storyBoard 없이 개발하려면 어떻게 해야하는지 간단하게 알아보고자 합니다 :) 어려울거 없답니다! 차근차근 빠르게 알아보죠! 기존에 하던대로 새 프로젝트를 하나 생성해주세요! SwiftUI를 사용할게 아니니깐 StoryBoard 로 선택해서 생성합니다! 그럼 ..
-
ARC(Autometic Reference Counting)Swift 2020. 2. 3. 17:38
- ARC(Autometic Reference Counting): Reference 개수를 세면서 자동으로 메모리를 관리해주는 방식입니다. - 참조하는 Reference 개수가 0이 되면 자동으로 힙 메모리에서 제거합니다. - 만약 서로 강하게 참조하고 있다면 reference 개수가 0이 될 수 없어 메모리 누수가 발생합니다. - 이를 방지하기 위한 방법으로 weak, unowned 가 있습니다. weak와 unowned는 reference count를 증가시키지 않고 참조하는 방식입니다. - 이미 메모리에 존재하지 않는 대상에 접근하려고 하면 런타임 에러가 발생합니다. 따라서 reference count를 증가시키지 않는 만큼 메모리에서 해제된 대상에 접근하지 않도록 주의해야 합니다. - weak는 ..
-
escaping closureSwift 2020. 1. 30. 16:20
개인적으로 공부하며 정리하는 블로그 입니다. 오류나 부족한 부분이 있을 수 있으니 감안하여 봐주시고 아낌없는 조언 감사드립니다 :D escaping Closure는 뜻 그대로 탈출 가능한 클로저 입니다. 함수가 실행된 이후에 실행되는 클로저 입니다. 비동기로 실행되거나 completionHandler 등이 escaping closure 입니다. escaping closure안에서는 self 를 명시적으로 사용해줘야 합니다. var completionHandlers: [() -> Void] = [] func someFunctionWithEscapingClosure(completionHandler: @escaping () -> Void) { completionHandlers.append(completionH..