본문 바로가기

전체 글245

Collection View Table View에 비해 데이터 나열이 자유롭기 때문에 많은 아이템을 보여주는 상황에서 사용 수평, 수직 나열 방향을 정할 수 있음 Collection View Cell을 이용해서 표현 UICollectionViewLayout : Layout에 대해서 전문적으로 관리하는 객체가 필요 UICollectionViewLayout을 상속받아서 나만의 Layout을 만들 수 있음 UICollectionViewFlowLayout : 기본적으로 제공하는 Layout 객체 1행 안에 여러 개의 열을 표현하고 싶을 때 사용 실습 1-1, Collection VIew 추가 1-2, Auto Layout 지정 - Collection View를 화면 상하좌우에 꽉차게, 0으로 지정해줍니다. 1-3, Collection Vi.. 2022. 4. 16.
앱이 시작할 때 main.c 에 있는 UIApplicationMain 함수에 의해서 생성되는 객체? UIApplicationMain(_ :_ :_ :_ :) - 응용 프로그램 객체 및 응용 프로그램 대리자를 만들고 이벤트 주기를 설정합니다. - iOS 앱이 시작하기 위한 핵심 메서드로, 앱이 실행되면 UIApplication객체와 Delegate객체를 만들고 info.plist에서 필요한 nib file을 로드하고 메인이벤트 루프를 실행시킵니다. Declaration func UIApplicationMain(_ argc: Int32, _ argv: UnsafeMutablePointer, _ principalClassName: String?, _ delegateClassName: String?) -> Int32 Parameters argc - argc의 개수, 일반적으로 main에 해당하는 매개변수 ar.. 2022. 4. 15.
Core Data 정의 - 애플리케이션의 영구 데이터를 저장하는 프레임워크 - 임시 데이터를 캐시 하는 프레임워크 - 단일 기기에서 앱에 실행 취소 기능을 추가하는 프레임워크 - 앱의 콘텐츠나 데이터 자체를 저장/보관하는 특별한 객체 - Core Data는 ORM 매핑 프레임워크(데이터 저장 프레임워크)로, 데이터 베이스가 아닙니다. Core Data ​ 1, In-Memory 방식이 존재 - In-Memory방식 : 디스크에 저장하지 않고, 휘발성으로 테스트같이 잠깐 이용하려고 하는 경우에 사용하는 방식 - 사용하려는 모든 데이터는 우선 메모리에 로딩되는 과정이 존재합니다. - 코어 데이터는 읽고 쓰는 모든 데이터를 원칙적으로 메모리에 로드된 다음에 처리합니다. - (다른 DB 방식은 효율성을 위해 읽기 목적의 데이터 .. 2022. 4. 14.
Codable 정의 - 자신을 변환하거나 외부 표현으로 변환할 수 있는 타입. - Decodable과 Encodable프로토콜을 준수하는 타입. - Codable은 프로토콜이기 때문에, struct, enum, class에서 모두 채택 가능 - type이 다 지정되어 있는 객체 같은 경우 Codable만 채택하여 사용할 수 있습니다. - UIKit을 반드시 import해주여야 합니다. 예제 - 우선 Decodable과 Encodable가 공통적으로 필요로 하는 모델을 작성했습니다. - Person이라는 구조체를 만들었습니다. - CodingKeys는 json key가 아닌 내가 원하는 이름으로 지정해줄 수 있게 해주는 프로토콜입니다. Decodable - 자신을 외부표현에서 디코딩할 수 있는 타입 - Decodable.. 2022. 4. 13.
Optional 정의 - 값이 있을 수도 없을 수도 있는 것을 나타내는 것 - 옵셔널을 ?와 !를 사용해 변수를 선언하고 실행할 수 있습니다. - 옵셔널로 선언된 변수의 값은 일반 (Int, Double, String) 자료형이 아닌, Optional 자료형이 됩니다. 선언문에 사용할 때 - ?와 ! 모두 동일하게 옵셔널 변수 선언을 목적으로 사용합니다, 하지만 !는? 와 또 다른 기능이 있습니다. 더보기 ? - 옵셔널 변수 선언 ! - 옵셔널 변수 선언, 옵셔널로 사용되지 않을 것 같으면 자동으로 옵셔널을 언래핑합니다. 옵셔널 실습 선언부에서 ?,! 사용 - ?,! 동일하게 옵셔널 변수 선언으로 실행돼, 변수 x의 값이 Optional(10)으로 초기화됩니다. var x : Int? = 10 // 선언문에서 ?는 옵셔.. 2022. 4. 12.
AnyObject 타입 캐스팅을 수행할 때 일반적으로 상속관계에 있는 클래스끼리만 캐스팅이 가능하지만, Any와 AnyObect 타입을 사용할 경우 상속 관계에 있지 않아도 타입 캐스팅을 할 수 있습니다. Any - Any는 함수 타입을 포함하여 모든 타입의 인스턴스를 나타낼 수 있습니다. 실습 - Any 타입엔 Value타입(구조체, 열거형), Reference타입(클래스) 상관없이 모두 저장이 가능. var TestArray: [Any] = [] TestArray.append(1) TestArray.append(1.0) TestArray.append("String") TestArray.append(true) TestArray.append({print("Hello World!")}) print(TestArray) pri.. 2022. 4. 11.