일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- url
- Method
- enum
- 스위프트
- String
- Xcode
- extension
- UIKit
- instance
- IOS
- tuist
- 코딩테스트
- Protocol
- Foundation
- optional
- Swift
- Unicode
- struct
- initializer
- Git
- Class
- type
- 이니셜라이저
- interpace
- property
- 디자인패턴
- init
- delegate
- Terminal
- initalizer
- Today
- Total
목록Swift/iOS (33)
아리의 iOS 탐구생활
# 인터페이스 빌더에서 직접 연결하기 일단 2개의 View Controller를 준비한 후 ‘Go to B’ 버튼을 올려준다. 그리고 ‘Go to B’ 버튼을 선택 후 Ctrl 키를 누른채로 B View Controller로 드래그를 하면 연결할 수 있는 Segue의 종류가 뜬다. Segue로 Show를 선택하면 화살표가 하나 생기는데, 이게 Segue가 연결되었다는 의미이고, Segue를 선택한 후 Inspector에서 여러 설정을 바꿀 수도 있다. 결과 화면 이 예제에서는 Modal처럼 화면이 아래서 올라오는데, 옆으로 넘어가는 효과를 적용하려면 A ViewController를 Navigation Controller에 Embed 해주어야 한다. 직접 연결하는 방법은 ViewController 간의 상..
# IBAction 만들기 버튼을 Ctrl을 누르면서 코드쪽으로 드래그하면 된다. Name칸을 채워주고, Type을 UIButton으로 설정해준 뒤 Connect 버튼을 클릭해준다. 그럼 이러한 함수가 뙇! 생기는데 이 내부에다가 코드를 적어줄 것이다. ## Alert 제목과 메세지내용 만들기. let alret = UIAlertController(title: "알림", message: "알림창 내용", preferredStyle: .alert) 위와 같이 UIAlertController를 이용하여 파라미터를 채워준다. preferredStyle은 아래와 같이 두가지가 있다. Alert actionSheet ## Alert에 들어갈 액션버튼 만들기 위 사진과 같은 Yes, No 같은 버튼을 따로 구현해줘..
# Model 앱이 정확히 무엇을 할지 코딩하는 것이다. 비즈니스 로직을 담당하는 함수들이 정의되고, 처리되는 데이터(클래스, 구조체 등)와 내부 알고리즘이 정의된다. # View 사용자에게 말 그대로 보여지는 영역으로 볼 수 있다. Storyboard 파일을 비롯해서 인터페이스를 구축하는 영역으로 생각하면 될 것 같다. # Controller Model 과 View 사이의 다리라고 보면 된다. Controller는 Model이 가지고 있는 데이터를 어떻게 할 것인지 명령을 내린다. 그리고 이 명령을 토대로 사용자에게 보여지는 인터페이스 부분도 수정을 한다. 보통 여기서 @IBAction 함수들이 정의된다. 즉 사용자가 View를 통해 Interaction을 하면 Controller가 이를 control..
KVO는 A객체에서 B객체의 프로퍼티가 변화됨을 감지할 수 있는 패턴이다. Notification이 주로 Controller와 다른 객체 사이의 관계를 다룬다면 KVO는 객체와 객체 사이의 관계를 다루는데 적합하다. 메소드나 다른 액션에서 나타나는 것이 아니라 프로퍼티의 상태에 반응하는 형태이다. 객체의 프로퍼티의 변경사항을 다른 객체에 알리기 위해 사용하는 코코아 프로그래밍 패턴 Model과 View와 같이 논리적으로 분리된 파트간의 변경사항을 전달하는데 유용함 NSObject를 상속한 클래스에서만 KVO를 사용할 수 있다. 장점 두 객체 사이의 정보를 맞춰주는 것이 쉽다 New / old value를 쉽게 얻을 수 있다. KeyPath로 옵저빙하기 때문에 nested objects도 옵저빙이 가능하다..
싱글턴 객체중 하나이므로 이벤트들의 발생 여부를 옵저버를 등록한 객체들에게 Notification을 post하는 방식으로 사용한다. Notification Name이라는 Key 값을 통해 보내고 받을 수 있다. 장점 많은 줄의 코드가 필요없이 쉽게 구현이 가능하다. 다수의 객체들에게 동시에 이벤트의 발생을 알려줄 수 있다. Notification과 관련된 정보를 Any? 타입의 object, [AnyHashable : Any]? 타입의 userInfo로 전달할 수 있다. 단점 key 값으로 Notification의 이름과 userInfo를 서로 맞추기 때문에 컴파일시 구독이 잘 되고 있는지, 올바르게 userInfo의 value를 받아오는지 체크가 불가능 하다 추적이 쉽지 않을 수도 있다 Notifica..
Apple Developer Documentation developer.apple.com 타이머를 만들 수 있는 타입이다. 특정 시간이 지난 후 시작되어 지정된 메세지를 대상 객체로 보내는 타이머이다. 타이머는 Run Loop와 함께 작동하는데, Run Loop는 타이머에 대한 strong Reference를 유지하므로, Run Loop에 추가한 후 타이머에 대한 strong Reference를 유지할 필요가 없다. 타이머를 효과적으로 사용하려면 먼저 Run Loop가 작동하는 방법을 알아야 한다. Introduction Introduction Threads are one of several technologies that make it possible to execute multiple code pat..
AVAudioPlayer Apple Developer Documentation developer.apple.com 파일이나 메모리의 오디오 데이터를 재생하는 것들 담당하는 타입이다. local에 있는 오디오 파일을 재생할 수 있다. AVAudioPlayer가 할 수 있는 일은 다음과 같다. Play sounds of any duration Play sounds from files or memory buffers Loop sounds Play multiple sounds simultaneously, one sound per audio player, with precise synchronization Control relative playback level, stereo positioning, and pla..
iOS 프로그래밍 강의를 듣다가 만나게 된 번들. 이 번들은 디렉토리를 추상화한 용어이다. Bundle과 Package 개념을 서로 혼용해서 쓰는 경우가 많은데, 많은 Bundle이 Package이기도 하기 때문이다. application 같은 경우는 Finder에서 사용자에게 단일한 파일로 노출되는 Package이면서, 실행 코드와 리소스를 포함하여 Bundle이기도 한 대표적인 예시라고 볼 수 있다. A Bundle is a directory with a standardized hierarchical structure that holds executable code and the resources used by that code. 실행 가능한 코드와, 그 코드에 의해 사용되는 리소스를 가진 디렉토리...
Auto Layout Guide: Understanding Auto Layout developer.apple.com 뷰에 설정되어있는 제약조건(Constraints)을 기반으로 해서 동적으로 크기와 위치를 계산하는 것을 말한다. 사람들은 다양한 크기의 아이폰 디바이스를 사용한다. 그렇기 때문에 어플리케이션이 디바이스 사이즈에 구애받지 않고 동일한 화면을 구성할 필요가 있다. 그래서 나온 것이 오토레이아웃(Auto Layout)이다. 오토 레이아웃은 뷰의 크기와 위치를 동적으로 계산한다. 즉 인터페이스에 절대적인 좌표가 아닌 상대적인 좌표가 필요할 때 유용하다. 오토레이아웃이 주로 사용되는 이유는 외부 변경과 내부 변경 때문이다. 외부 변경(External Changes) 슈퍼뷰의 크기나 모양이 변경될 때..
Apple Developer Documentation developer.apple.com 아이폰 앱마다 자기만의 공간을 가지고 있는데, 이 공간을 관리하는 매니저라 생각하면 될 것 같다. 이 공간은 일반 맥, 윈도우처럼 Document 폴더, Download 폴더 등등 다양한 종류의 폴더가 있다. 경로(URL) 접근하기 다른 작업을 하기전 공통 사항인 해당 폴더로 접근하는 방법을 먼저 알아보자. // 파일매니저 인스턴스 생성 let fileManager = FileManager.default // 사용자의 문서 경로 let documentPath: URL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] urls라는 메소드는 요청된 ..