일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- extension
- 이니셜라이저
- init
- Protocol
- Swift
- type
- enum
- Unicode
- initializer
- Terminal
- Method
- tuist
- IOS
- Git
- Foundation
- delegate
- 디자인패턴
- optional
- interpace
- initalizer
- url
- property
- 스위프트
- String
- 코딩테스트
- struct
- Xcode
- Class
- instance
- UIKit
- Today
- Total
목록분류 전체보기 (78)
아리의 iOS 탐구생활
# 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..
# 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. 실행 가능한 코드와, 그 코드에 의해 사용되는 리소스를 가진 디렉토리...
Auto Layout Guide: Understanding Auto Layout developer.apple.com 뷰에 설정되어있는 제약조건(Constraints)을 기반으로 해서 동적으로 크기와 위치를 계산하는 것을 말한다. 사람들은 다양한 크기의 아이폰 디바이스를 사용한다. 그렇기 때문에 어플리케이션이 디바이스 사이즈에 구애받지 않고 동일한 화면을 구성할 필요가 있다. 그래서 나온 것이 오토레이아웃(Auto Layout)이다. 오토 레이아웃은 뷰의 크기와 위치를 동적으로 계산한다. 즉 인터페이스에 절대적인 좌표가 아닌 상대적인 좌표가 필요할 때 유용하다. 오토레이아웃이 주로 사용되는 이유는 외부 변경과 내부 변경 때문이다. 외부 변경(External Changes) 슈퍼뷰의 크기나 모양이 변경될 때..
코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 문제가 아주 친절하다. 1단계부터 7단계까지 순서가 나열되어 있는데, 단계별로 차근차근 구현해보는 문제이다. Swift의 문자열을 잘 다루는 편이라면 그다지 어렵진 않은 문제다. 한꺼번에 많은 것을 하려고 하지말고 단계별로 구현해보는 것을 추천한다. 힌트 String 관련 메소드를 활용하면 쉽게 풀수 있다. 더보기 func solution(_ new_id:String) -> String { var newID = "" // 1단계: 소문자로 치환하기 let..