일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UIKit
- IOS
- 코딩테스트
- instance
- Unicode
- init
- 이니셜라이저
- tuist
- optional
- delegate
- 스위프트
- initalizer
- Class
- property
- Swift
- Xcode
- struct
- Foundation
- type
- enum
- Method
- String
- interpace
- url
- Protocol
- initializer
- Git
- Terminal
- 디자인패턴
- extension
- Today
- Total
목록IOS (35)
아리의 iOS 탐구생활
Apple Developer Documentation developer.apple.com 값을 늘리거나 줄이는 컨트롤. # 화면에 Label과 Stepper 추가하기 라이브러리 창을 켜서 Label과 Stepper를 추가해준다. Label의 텍스트와 폰트 크기를 취향껏 조절해준다. 아래 예제처럼 Auto Layout을 설정해준다. Auto Layout을 설정하지 않는다면 화면크기가 달라질때마다 위치가 바뀔 수 있다. # @IBOutlet과 @IBAction을 설정하고 코드와 연결 Label과 Stepper를 코드에 연결하여 @IBOutlet 추가 마찬가지로 @IBAction 메서드도 추가해주자. Stepper를 동작할 때마다 Label의 텍스트가 변하도록 설정해준다. # 완성 # 주요 프로퍼티 살펴보기 ..
# ViewController의 생명주기란? 각각의 ViewController들은 생명주기란 어떤 것이냐면 말그대로 ‘보여졌다. 사라지는’ 주기를 이야기한다. 생명주기 관련 메서드들을 잘 활용하면 화면을 재구성하거나 할 때 유용하게 쓰이므로 잘 알아두는 것이 좋다. 정상적인 ViewController 생명주기를 요약하자면 Appearing 상태를 거쳐서 Appeared 상태가 진행되고, 만약 종료하려면 Disappearing 상태를 거쳐서 Disappeared 상태로 진행된다. 정상적이지 않은 등장하는 도중에 다시 퇴장되는 경우가 있는데 이럴 때는 Appearing 상태에서 Appeared상태로 가지않고 곧바로 Disappeared 상태로 가게된다. 사용자가 홈버튼을 눌러 앱을 백그라운드 상태로 보냈을 ..
# 인터페이스 빌더에서 직접 연결하기 일단 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 같은 버튼을 따로 구현해줘..
# Design Pattern 설계할 때 자주 쓰이는 템플릿 선배들의 삽질 기록 코드의 모양새 디자인 패턴은 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴이다. ## 사용 이유 디자인 패턴을 참고하여 개발할 경우 효율성과 유지보수성, 운용성이 높아지며 프로그램의 최적화에 도움이 된다. OOP의 다양한 문제 상황에 대한 예방 프로그래머 사이의 협업 효율 향상 프로그래머 사이의 의사소통 증진 코드의 안정화 및 최적화 코드의 재사용성 증가 주어진 패턴을 상황에 맞게 변경을 해서 사용해야 하는데 디자인 패턴에 집착하게 되면 유연하게 패턴을 적용 및 변경을 못하게 된다. 따라서 100퍼센트 지킬 필요는 없지만 명확하게 알아두면 쓸 일이 많다. # Arch..
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. 실행 가능한 코드와, 그 코드에 의해 사용되는 리소스를 가진 디렉토리...