목록분류 전체보기 (88)
iOS 개발일지

4주차 - 1차 평가과제 코드 개선 #2. Assignment - 다마고치 프로젝트 개선하기 - 리터럴한 문자열 줄이기 indentifier는 전부 타입 프로퍼티로 초기화해놨지만, StoryboardName과 UserDefaults는 미처 신경쓰지 못했던 것 같다. 한 눈에 보기 좋아졌고, 코드를 작성할 때에도 실수가 적을 것 같아 다음에도 열거형을 더 적극적으로 활용해야겠다. - 구조체 내에서 타입 프로퍼티/메소드 활용해서 개선하기 이번에 작성해서 사용한 구조체 같은 경우에는 굳이 인스턴스 프로퍼티가 필요하지 않을 것 같아 전부 타입 프로퍼티/메소드로 수정했다. 공통된 값을 사용할 거라면 타입 프로퍼티가 인스턴스를 생성하지 않아도 되니 더 적합한 것 같다. - 화면 전환 개선 해결중... - 생명주기 ..

iOS 앱 개발자 데뷔 과정 20회차 #1. Checklist - Local Notification Notification은 원격과 로컬 두 종류가 있는데, 개인 어플의 경우에는 로컬을 많이 사용한다. Notification의 구현은 아래와 같은 순서로 이뤄진다. 1. UNUserNotificationCenter.current의 인스턴스 생성 2. 권한 요청 : 권한을 허용해야 알림이 온다. : 권한 허용 문구는 시스템적으로 최초 한 번만 뜬다. : 허용이 안 된 경우 애플 설정으로 직접 유도하는 코드를 구성해야 한다, 3. 권한을 허용한 사용자에게 알림 요청 : Identifier가 한개라면 알림이 쌓이지 않고 교체되는데, 이럴 때 Date()를 사용하면 잘 겹치지 않기 때문에 유용하다. 여기까지만 해..

iOS 앱 개발자 데뷔 과정 19회차 #1. Checklist - Protocol 특정 컨트롤에서 발생하는 각종 이벤트를 효율적으로 관리하기 위해 대리자(Delegate)를 지정하여 이벤트 처리를 위임하고, 실제로 이벤트가 발생하면 위임된 대리자(Delegate)가 콜백 메소드를 호출해주는 딜리게이트 패턴(Delegate Pattern)을 구현하기 위해 이용된다. 프로토콜은 규약이며, 실질적인 구현은 프로토콜을 채택(준수)한 타입이 구현한다. Property Requirements : 속성 요구사항 프로토콜 프로퍼티는 무조건 var로 선언해야 하며, 구현할 때에는 저장 프로퍼티로 사용해도 되고 연산 프로퍼티로 사용해도 된다. 선언할 때에는 { get } 과 같은 형태로 명시하지만 이는 get 기능을 최소..

iOS 앱 개발자 데뷔 과정 18회차 #1. Checklist - Property Observer 프로퍼티 옵저버는 저장 프로퍼티에서 사용되며, 프로퍼티의 값을 관찰하다 변경되었을 때 자동으로 호출된다. willSet : 값이 저장되기 직전에 호출되며 newValue를 통해 새로 저장될 값을 알 수 있다. didSet : 값이 저장된 직후에 호출되며 oldVlaue를 통해 저장되기 전의 원래 값을 알 수 있다. - struct -> mutating func 구조체 내에서 프로퍼티를 변경하려고 하면 mutating 키워드를 함수 앞에 붙여야 한다. - class -> static func vs class func 슈퍼클래스의 타입 메서드를 재정의해서 쓰고 싶다면, static 대신 class를 사용하면 된..

iOS 앱 개발자 데뷔 과정 17회차 #1. Checklist - Type Property vs Instance Property 인스턴스 프로퍼티는 구조체나 클래스 등의 타입을 선언하고, 해당 타입에 대한 인스턴스가 생성이 되었을 때 사용이 가능하다. 인스턴스 프로퍼티는 인스턴스를 생성할 때마다 다른 값을 지닐 수 있다. 그리고 static이라는 키워드를 사용하는 타입 프로퍼티는 타입 자체에 속하는 프로퍼티로, 인스턴스가 아무리 많더라도 값이 하나이다. 타입 프로퍼티는 lazy 키워드를 붙이지 않더라도 lazy로 동작한다. 따라서 타입 프로퍼티의 값을 수정하면 모든 인스턴스에 수정한 값이 반영이 되지만, 인스턴스 프로퍼티의 값을 수정하면 해당 인스턴스의 프로퍼티에만 수정된 값이 반영된다. - Stored..

iOS 앱 개발자 데뷔 과정 16회차 #0. Memo - Show Build Folder in Finder : 빌드 폴더 바로 보기 - Generate Memberwise Initializer : initializer 자동 완성 클래스 이름 더블클릭 후 해당 버튼 누르면 이니셜라이저가 자동으로 작성된다. 자동완성되는 init 앞 키워도는 지워도 됨 - Code Snippet 백업 Xcode 폴더의 UserData 로 들어가면 CodeSnippets 폴더가 나오는데, 여기에 다 저장이 되어 있다! - Color Blended Layers : 시뮬레이터의 시각적 효과 객체의 범위에 임의의 색을 줌으로써, 객체들의 실질적 범위를 확인할 수 있다. - Slow Animations : 시뮬레이터 매우 느리게 실행..
새싹 3주차 - 1차 평가과제 - 초기화 버튼 구현 모든 UserDefaults 삭제하기 for key in UserDefaults.standard.dictionaryRepresentation().keys { UserDefaults.standard.removeObject(forKey: key.description) } 모든 rootViewController의 하위 ViewController dismiss 하기 self.view.window?.rootViewController?.dismiss(animated: true, completion: nil) - 텍스트필드 테두리 없애기 self.borderStyle = .none - 네비게이션 바 자잘한 변경 네비게이션 아이템 컬러 변경 navigationItem..

iOS 앱 개발자 데뷔 과정 15회차 #0. Memo - ViewController간 데이터 전달 1. 정보를 받을 공간(프로퍼티) 생성 - 전환 후 화면 2. 화면을 전환하기 전 data를 넘기는 코드 작성 - 전환 전 작업 3 . viewDidLoad에서 받은 데이터를 뷰에 표현 - 전환 후 화면 전달할 정보가 적다면 특정 정보만 전달하는 것도 가능하지만, 코드의 재활용 등을 생각했을 때에는 한번에 전달하는게 좋은 것 같다. - Window rootViewController 사용자에게 딱 한번만 보여주고 싶은 화면이 있을 수 있다. 가장 이해가 쉬운 로그인 화면으로 예를 들어보면, 처음 앱을 실행했을 땐 로그인 화면이 뜨지만 그 다음부터는 메인 화면이 첫 화면이 된다. 우선 SceneDelegate에..