전체 글
-
NotificationCenteriOS 2019. 11. 27. 14:26
Notification은 객체 간의 소통을 위해 사용되는 도구 중 하나이다. MVC 패턴에서 Controller는 View 또는 Model과 직접 커뮤니케이션 하지 않는 것이 바람직하다. Notification은 주로 Controller에서 Model의 상태 변화를 감지하는데 사용된다. (API 통신을 하는데 데이터를 받은 후 Controller에서 작업을 하고 싶다면??!) 어떻게 작동하는가? Notification Center는 3개의 구성 요소로 이루어져 있다. Listener (observer) : notifications를 감지 Sender : 필요할 때 notifications 를 보내주는 역할 itself : notification center 그 자체. 작동 원리는 매우 간단하다. Obse..
-
CGPoint, CGSize, CGRectiOS 2019. 11. 26. 15:32
Shortcut CGPoint: 위치를 나타냄. 2차원 좌표계의 점 (x, y) CGSize: 크기만을 나타냄. (width, height) CGRect: 크기와 위치를 나타냄 = CGPoint + CGSize (x, y, width, height) CGPoint : 2차원 좌표계의 점을 나타내는 구조체 /* Points. */ public struct CGPoint { public var x: CGFloat public var y: CGFloat public init() public init(x: CGFloat, y: CGFloat) } CGSize : width와 height의 값을 나타내는 구조체 /* Sizes. */ public struct CGSize { public var width: CGF..
-
Apple Certification, .p8 .p12 .pemiOS 2019. 11. 20. 17:28
많고 복잡한 Apple의 인증서들, "이 작업을 하려면 이게 필요하고 이게 필요하다더라.." 라는 식으로 해왔지만 도대체 .p8은 무엇이고 .p12는 무엇인가??! 한번 정리해보고자 합니다. 오류나 잘못된 사항이 있다면 댓글로 알려주시면 감사하겠습니다. Apple에서 발급한 서명 인증서로, 애플 관련 서비스를 개발, 배포하려면 필수적으로 가지고 있어야 한다. 하지만 APNs(Apple Push Notification Service), Wallet, MDM 등 확장된 서비스를 사용해야 하는 프로그램이라면 Developer 계정을 이용해 따로 인증서를 발급 받아야 한다. 특히 앱에서 많이 사용되는 Push 같은 기능을 위해서는 인증서를 통한 key가 필요하다. 애플 개발 및 서비스에 익숙하지 않은 사용자는 ..
-
mutatingSwift 2019. 11. 19. 10:18
구조체를 정의할 때 메서드가 구조체 내부의 데이터를 수정할 때는 mutating 키워드를 선언 해주어야 한다. mutate란 사전적으로 변화시키다, 돌연변이 의 뜻을 갖는다. 뜻을 잘 생각하면 어떻게 쓰이는지 쉽게 이해할 수 있는데, 말 그대로 원래는 되지 않는 어떤 것을 되게 만드는, 돌연변이로 만드는 것이다. Swift에서 class 는 reference type 임에 반해 struct 와 enum 은 value type 이다. value type 일 때 자신의 인스턴스 메서드 안에서는 property를 수정할 수 없다. 이때 수정이 필요하다면 mutating 키워드를 사용해야 한다. struct Point { var x = 0.0, y = 0.0 // value type인 struct에서 // 자신..
-
Linked ListComputer Science/DataStructure 2019. 11. 19. 00:27
- 선형 자료구조 - 순차적 접근방식 ( O(n) ) - 삽입, 삭제가 빠르다 ( O(1) ) - 다음 노드를 가리키는 주소를 저장할 공간 필요 Linked List는 순차적으로 모인 데이터들의 모음이다. 흔히 각각의 데이터를 Node(노드), 각 노드는 다음 차례의 노드의 reference(주소)를 갖고 있다. 대표적으로 두 가지 유형이 있는데, Singly Linked List: 내 다음 노드(next node)의 주소만을 갖고 있다. Double Linked List: 내 이전(previous)과 다음의 주소를 갖고 있다. Linked List를 사용하기 위해서는 시작과 끝의 주소를 알아야 하는데 이를 head와 tail이라 부른다. Performance Linked List의 대부분의 연산은 O(..
-
inoutSwift 2019. 10. 24. 22:07
함수로 전달된 파라미터는 함수 내부에서 상수로 취급된다. 이때 파라미터의 값을 변경해주고 싶다면, inout 을 붙여준다. 이는 함수 내부에서 값이 변경될 것이라는 신호다. 바로 변수로서 값을 변경할 수 있고 외부 변수의 값도 바뀐다. 따라서 함수의 파라미터는 당연히 값이 변경될 수 있는 var로 선언된 변수여야하며, & 를 붙여서 레퍼런스를 넘겨준다. 예를들어 다음과 같이 사용한다, func doulbeInPlace(number: inout Int) { number *= 2 } var myNum = 10 doubleInPlace(number: &myNum) print(myNum) // 20
-
Variadic functions, 불특정 개수 파라미터Swift 2019. 10. 24. 21:36
variadic: 변종의, 독특한 일반 함수와는 조금 다른 함수란 뜻으로 파라미터의 개수를 여러 개 받을 수 있는 함수를 의미한다. Int... 와 같이 T... 의 형태로 사용한다. 실제로 print()는 대표적인 variadic 함수라 할 수 있는데, 다음과 같이 여러 파라미터를 출력할 수 있다. print("hello, ", "woongs") // hello, woongs 제곱을 출력해주는 square 함수를 variadic으로 만들 수도 있다. func square(numbers: Int...) { for number in numbers { print("squared \(number) is \(number * number)" } } square(numbers: 1, 2, 3, 4, 5)
-
Class vs Struct in SwiftSwift 2019. 10. 21. 17:01
공통점 properties와 methods를 정의할 수 있다. subscript를 정의할 수 있다. (subscript syntax를 사용할 수 있다.) init 함수를 통해 초기화 할 수 있다. extension을 사용할 수 있다. protocol로 적합하다. 차이점 class는 다른 class를 상속받을 수 있다. class는 deinitialized 할 수 있다. class는 reference type이고 struct는 value type이다. 특히 마지막 차이점이 중요한데, 이 차이가 우리가 둘 중 무엇을 사용할 지 결정적이기 때문이다. class와 struct의 가장 큰 차이는 struct는 value type, class는 reference type이라는 것이다. value type은 복사할 ..