🧑💻/Swift
-
iOS ViewController 생명주기🧑💻/Swift 2021. 7. 12. 22:27
iOS는 Navigation Controller를 사용해 화면을 전환할 때 LIFO(Last In First Out) 방식으로 관리합니다. 스택 구조와 동일하므로 마지막으로 push 된 화면을 표시하고 제거(pop)합니다. 화면이 표시되기 전부터 제거된 후까지의 생명주기를 알아보겠습니다. 1. init ViewController 객체가 생성됩니다. 2. loadView View를 메모리에 로드합니다. 3. viewDidLoad View의 Controller가 메모리에 로드된 뒤 호출됩니다. 보통 화면이 표시되기 전 초기화하는 작업을 추가합니다. awakeFromNib nib 파일이란 Xcode가 xib와 storyboard를 컴파일한 바이너리 파일입니다. 런타임 시 View를 생성하기 위해 nib 파일을..
-
iOS AVAudioPlayer 사용하기🧑💻/Swift 2021. 6. 22. 00:58
프로그래머스의 뮤직 플레이어 앱 개발 도중 mp3 파일을 재생하기 위해 AVAudioPlayer를 사용할 기회가 생겼습니다. AVAudioPlayer는 다음 기능을 제공합니다. 파일 또는 버퍼의 모든 구간에 대해 오디오 재생 재생되는 오디오의 볼륨, 패닝, 속도 및 반복 동작 제어 재생 수준 측정 데이터에 액세스 여러 플레이어의 재생을 동기화하여 여러 사운드를 동시에 재생 먼저 AVAudioPlayer를 사용하기 위해서는 AVFoundation 프레임워크를 import 합니다. import AVFoundation AVAudioPlayer(contentsOf:) 또는 AVAudioPlayer(data:) 로 플레이어를 생성할 수 있습니다. 네트워크 상 존재하는 파일의 경우 URL로부터 Data를 추출하고 ..
-
디자인패턴 - MVC, MVP, MVVM🧑💻/Swift 2021. 5. 10. 15:39
디자인 패턴은 3가지로 구분됩니다. 1. 구조 디자인 패턴 : 객체가 어떻게 결합되고 구성되는지 설명합니다. MVC, MVVM 등이 있습니다. 2. 행위 디자인 패턴 : 객체의 통신 방법을 설명합니다. Delegation, Strategy, Observer 등이 있습니다. 3. 생성 디자인 패턴 : 객체를 생성하거나 인스턴스화 하는 방법을 설명합니다. Builder, Singleton, Prototype 등이 있습니다. 이 중 구조적 디자인 패턴(Structural Design Pattern)에 대해 알아보겠습니다. MVC 패턴 : Model-View-Controller Model : 데이터를 구성하는 틀. struct, class 등 View : 화면에 표시되는 요소나 제어. UIView의 subcla..
-
iOS의 메모리 관리 - strong / weak / unowned🧑💻/Swift 2021. 5. 8. 17:36
iOS의 메모리 관리 ARC(Automatic Reference Counting) 컴파일 시 자동으로 retain, release 코드를 추가해 줍니다. 인스턴스가 생성되면 정보를 저장하기 위해 메모리를 힙에 할당합니다. 인스턴스를 참조하는 프로퍼티의 갯수(retain count)를 체크하고, 참조 횟수가 0이 되면 메모리에서 해제합니다. strong vs weak vs unowned strong (default) weak unowned 구분 강한 참조 약한 참조 약한 참조 / 미소유 참조 소유권 O X X 참조 시 retain count 증가 O X X optional non-optional 메모리 해제 retain count가 0이면 해제됨. 객체를 추적하여 해제 시 nil로 변경 해제 후 참조 시 ..
-
SwiftUI Preview Device (미리보기) 바꾸기🧑💻/Swift 2021. 1. 25. 17:47
SwiftUI를 사용하면 미리 보기 화면이 제공됩니다. 👏👏👏 정말 필요하던 기능이었어요. 애플 만세 왠지 시뮬레이터 선택하면 미리보기 화면도 바뀔 것 같은 그런 느낌인데 그렇지 않습니다. ㅎㅎ; Simulator Device != Preview Device 설정은 두 가지 방법이 있습니다. (2번 자동 완성 추천합니다. 급하면 바로 스크롤 다운) 1. 직접 입력해서 설정하기 코드를 직접 작성 후 Build > Resume 버튼 클릭하면 반영됩니다. ContentView() .previewDevice("iPhone 12") 저 String에 넣을 값은 토씨 하나 틀리면 안 되는데 기종이 뭐가 있는지 어떻게 보느냐? 하면 previeDevice를 option 키를 누른 채로 클릭해주세요. xcrun sim..