IOS

    [iOS] NSObject

    iOS의 Cocoa는 NSObject를 상속받는 모든 클래스를 가리키는 단어이다. 따라서 CocoaTouch프레임워크란 iOS환경을 구축하기위한 최상위 프레임워크이며 일반적으로 옵씨에서의 NSObject와 스위프트에서 사용되는 UIKit, Foundation 등에 포함되는 대부분의 클래스가 여기에서 속한다. NSObject는 Objective-C 및 Swift 프로그래밍 언어의 기본 클래스이며 해당 언어에서 대부분의 다른 클래스의 루트 클래스 역할을 한다. UIButton은 UIControl을 상속하고, UIView는 UIResponder, UIResponder는 NSObject를 상속한다. NSObject는 어플리케이션의대부분의 객체에 필요한 기본 동작을 정의하는 클래스이다. 객체를 생성, 복사, 비교..

    [iOS] Core Data는 무엇인가.

    코어데이터 코어데이터란 넓은 의미에서 앱의 모델계층이자, 데이터베이스, ORM등의 기능을 가진 객체 그래프 관리 프레임워크이다. CoreData는 경량의 고성능 관계형 데이터베이스 엔진인 SQLite를 기반으로 구축되었고 개발자가 복잡한 SQL문을 작성하지 않고도 데이터베이스와 상호작용 할 수 있도록 직관적이고 사용하기 쉬운 인터페이스를 제공한다. 객체 그래프 관리 프레임워크 객체 그래프란 메모리에 있는 객체들과 객체들 간의 관계를 말한다. 예를 들어 Person이라는 객체와 Family라는 객체가 이와 같은 관계로 메모리에 올라간다면 객체들이 어떤 관계를 갖고 있는지를 객체 그래프라고 하는 것이다. 예를 들어 실제 앱의 예시로 보자면 SNS앱에서 게시글이 있고, 게시글에는 댓글들이 있을텐데 두 객체의 ..

    [iOS] - Realm을 활용한 Widget(위젯)

    Realm과 Widget(위젯) WWDC 에선 Personalized하고 glanceable한 위젯이 좋은 위젯이라고 한다. personalized한 위젯이란? 날씨 위젯처럼 개인이 사는 지역마다 다른 정보를 알려줘야한다. 이런 개인에 따라 맞춤 정보를 제공하는 것을 Personalized라고 한다. glanceable한 위젯이란? 어떤 동작을 하지 않아도 바로 간편하게 원하는 정보를 확인할 수 있는 것을 glanceable한 위젯이라고 한다. WWDC에서 강조한 부분은 위젯은 작은 앱이 아님(Widget are not mini-apps)이다. 위젯은 사용자가 필요한 정보를 볼 수 있게 해주는 전광판이라고한다. 하지만 여러 위젯들을 보면 아래처럼 버튼이 있는 것을 볼 수 있는데 실질적으론 위젯 내부에서 ..

    [iOS] Realm과 사용법

    Realm이란? 오픈소스이며 모바일에 최적화된 라이브러리이다. 객체지향 데이터베이스로, iOS, Android, React Native등 다양한 플랫폼에서 사용할 수 있으며 로컬에 저장된다. UserDefault는 간단한 데이터만 저장하는 용도이다(id, pw, 간단한 설정과 같은..) 큰 용량을 저장하기엔 무리가있다. ORM이 아닌 *데이터 컨테이너 모델을 사용하고 데이터 객체는 Realm에 객체로 저장된다. *컨테이너가 뭘까. 컨테이너란 OS상에 논리적인 구획(컨테이너)을 만들고, 어플리케이션을 작동시키기 위해 필요한 라이브러리나 어플리케이션등을 하나로 모아, 별도의 서버인 것처럼 사용할 수 있게 만든것이다. OS의 리소스를 논리적으로 분리시키고 여러개의 컨테이너가 공유하여 사용한다. 컨테이너는 오버..

    [iOS] some키워드?

    some 키워드? SwiftUI를 공부하며 많이 본 키워드이지만 난 아직 SwiftUI를 깊게 공부하지 않는다 하지만 일단 한번 본다면 some키워드는 Swift5.1의 새로운 기능이다. some 키워드는 연산프로퍼티인 body안에 불투명한 타입이 있음을 나타낸다?? some 키워드는 프로토콜을 준수하는 불투명한 유형을 리턴하기위해 프로토콜과 함께 사용될 수 있다. protocol Shape { func describe() -> String } struct Square: Shape { func describe() -> String { return "I'm a square. My four sides have the same lengths." } } struct Circle: Shape { func desc..

    [iOS] KVO(Key-Value Observing)

    KVO(Key-Value-Observiing)란? KVO는 A객체에서 A의 변경사항을 B객체에게 알리기 위해 사용하는 코코아 프로그래밍 패턴이다. KVO를 사용하면 다른 개체의 특정 속성이 변경될 때 알림을 받도록 객체를 등록할 수 있다. 프로퍼티 옵저버인 willSet과 didSet이랑 유사하지만 외부에 관찰자를 추가하는것이 다르다. 또한 Objective-C 런타임에 의존하기 때문에 순수한 Swift에서는 그리 좋지 않다고한다...? 따라서 NSObject를 상속받는 클래스로 정의해주어야 하며, 각각의 프로퍼티에는 @objc dynamic 이라는 표시를 해야한다. RxSwift와 유사한 느낌이다? Observing을 위한 Setup class Address { var town: String init(..

    [iOS] URLSessionTask failed with error: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection. HTTP접근 허용

    Alamofire를 사용해 통신을 하다가 다음과 같은 에러가 발생했다. URLSessionTask failed with error: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection APP Transport Security(ATS): HTTP에서 보안이 향상된 버전이 HTTPS이며 대부분의 웹이 HTTPS를 사용하고 있지만 그렇지 않은 서비스도 있다. iOS9 이후로 APP Transport Security(ATS)를 이용하여 HTTP접속을 통한 접속을 기본적으로 차단한다. 내가 접근한 API "http://openapi.seoul.go.kr:8088..

    [iOS] SnapKit

    짧은 코드로 autolayout을 표현할 수 있도록 도와주는 프레임워크 https://github.com/SnapKit/SnapKit GitHub - SnapKit/SnapKit: A Swift Autolayout DSL for iOS & OS X A Swift Autolayout DSL for iOS & OS X. Contribute to SnapKit/SnapKit development by creating an account on GitHub. github.com 코드베이스로 UI를 구현하고 오토레이아웃으로 구현할 때 편리하다. 오토레이아웃 let view = UIView() let square = UIView() square.backgroundColor = .blue square.frame = C..

    [iOS] Push Notification(1). Remote Notification , APNs

    Push의 종류 로컬 푸시(Local Notification): 앱으로부터 push를 앱에 띄우는 것 => https://clamp-coding.tistory.com/43 서버 푸시(Remote Notification): 서버로부터 push를 앱에 띄우는것. Remote Notification을 사용하는 상황? VIP를 선별하여 쿠폰을 발급하고 싶다. 내가 팔로우하는 사용자가 나를 태그했을 때 확인해 보라는 알람을 보내고 싶다. 불특정 시간, 불특정 인원, 불특정 장소에 상황에 맞게 알람을 보내고싶다. Local에서 사용하는 장소, 시간, 간격에 맞춰 알람을 보내고싶은게 아닌, 특정 상황에 특정 타겟에게 알람을 보내고 싶을 때 필요한 Notification이다. Remote Notification 전송 ..

    [IOS] - UIWindow

    iOS 개발에서 UIWindow는 사용자 인터페이스의 필수 구성요소이다. 모든 뷰와 컨트롤이 표시되는 창이다. UIView는 뷰 관리 및 표시, 터치 이벤트 처리 및 애플리케이션의 전체적인 모양 관리를 담당한다. UIWindow란 UIWindow는 UIView의 하위 클래스이며, iOS 애플리케이션의 View를 관리하고 표시하는 역할을 한다. UIWindow는 View들을 담는 컨테이너며 Event를 전달해주는 매개체이다. iOS앱은 콘텐츠를 화면에 보여주기위해 최소 1개 이상의 윈도우를 가지고 있다(보통1개) 애플리케이션이 시작될 때 시스템에 의해 자동으로 생성되며 앱의 첫 번째 뷰 컨트롤러 표시를 담당한다. UIWindow의 역할 UIWindow객체는 iOS앱의 사용자 인터페이스를 관리하는데 중요한 ..