iOS(13)
-
[Swift] ARC (Automatic Reference Counting), 강한참조(strong), 순환참조(retain cycle), 약한참조(weak), 미소유참조(unowned)
👉 ARC (Automatic Reference Counting) 이란? 힙은 메모리를 해제해주지 않으면 메모리누수가 발생하기 때문에 힙 영역의 메모리를 관리하는 방법 객체가 더 이상 필요하지 않을 때 메모리에서 자동으로 해제한다. 👉 ARC 장/단점 장점 개발자가 참조해제 시점을 파악할 수 있다. 런타임시점에 추가 리소스를 발생하지 않는다. 단점 순환참조 발생 시 영구적으로 메모리가 해제되지 않을 수 있다. 👉 RC (Reference Counting) 란? 객체를 현재 누가 가지고 있는 지(참조하고 있는 지)를 숫자로 나타낸 것 👉 RC 계산 시점 컴파일 타임에 언제 참조되고 언제 해제되는 지 결정되어 런타임때 그대로 실행한다. ✔️ 컴파일 / 런타임 컴파일(Compile): 작성된 소스코드를 컴퓨터..
2024.03.29 -
[iOS] Concurrency Programming (동시성 프로그래밍) 3 : Operation
👉 이전 글 [iOS] Concurrency Programming (동시성 프로그래밍) 2 : GCD, DispatchGroup, DispatchWorkItem 👉 시작 2023.03.15 - [iOS/iOS] - [iOS] Concurrency Programming (동시성 프로그래밍) 1 : Sync (동기), Async (비동기) [iOS] Concurrency Programming (동시성 프로그래밍) 1 : Sync (동기), Async (비동기) 👉 시작 프로그래밍 nlestory.tistory.com 👉 시작 동시성 프로그래밍을 하기 위해서 iOS에서 제공하는 기술인 GCD와 Operation 중 오늘은 Operation 에 대한 공부한 내용이다. 👉 Operation 단일 작업과 관련된 코..
2023.03.16 -
[iOS] Concurrency Programming (동시성 프로그래밍) 2 : GCD, DispatchGroup, DispatchWorkItem
👉 이전 글 [iOS] Concurrency Programming (동시성 프로그래밍) 1 : Sync (동기), Async (비동기) 👉 시작 프로그래밍을 하면서 가장 어려웠던 부분이 비동기 처리였던 거 같다. 예전에 비동기라는 개념을 몰랐던 학생시절에 프로젝트를 만들면서 엄청난 고생을 했던 적이 떠오른다 ,, ㅎㅎ nlestory.tistory.com 👉 시작 위의 글에서는 동시성 프로그래밍과 비슷한 개념에 대해서 공부했다. 동시성 프로그래밍을 하기 위해서 iOS에서 제공하는 기술인 GCD와 Operation가 있다 이번에는 GCD에 대해서 공부해보았다. 👉 GCD (Grand Central Dispatch) = Dispatch 시스템에서 관리하는 디스패치 큐에 작업을 제출하여 멀티코어 하드웨어에서 ..
2023.03.15 -
[iOS] Concurrency Programming (동시성 프로그래밍) 1 : Sync (동기), Async (비동기)
👉 시작 프로그래밍을 하면서 가장 어려웠던 부분이 비동기 처리였던 거 같다. 예전에 비동기라는 개념을 몰랐던 학생시절에 프로젝트를 만들면서 엄청난 고생을 했던 적이 떠오른다 ,, ㅎㅎ 서버와 통신하면서 반드시 필요한 비동기처리,, iOS에서 비동기를 처리할 때 GCD를 사용하여 구현한다. 디스패치큐와 컴플리션 블럭을 활용하여 처리한다. 그렇다면 비동기와 비슷하게 생긴 동시성은 무엇인가? 이번에는 동기와 비동기, 직렬과 동시에 대해서 알아보았다. 👉 Sync (동기) / Async (비동기) ✔️ Sync (동기) 프로그램의 흐름과 이벤트의 발생 및 처리를 종속적으로 수행하는 방법이다. 작업이 끝나는 것을 기다린 후 다음 작업을 처리한다. import UIKit class ViewController: ..
2023.03.15 -
[iOS] UIView의 Life Cycle (생명주기)
👉 시작 이제 스토리보드가 아닌 코드베이스 UI로 구현하는 것이 편해지고 익숙해졌다. MVC패턴을 구현하면서 View 와 ViewController 를 분리하게 되면서 UIView 를 많이 다루게 되었다. UIView를 UIViewController에 연결하면서 호출순서가 헷갈리기 시작했다. UIView의 메서드들을 공부하면서 서로의 호출순서를 비교해보기로 했다. 또한 코드베이스 UI를 만들면 init(frame: ) 을 사용하는 데 required init(coder: )를 생성해야 에러가 사라지는 것을 볼 수 있다. xcode에서 바로 에러를 잡아주어서 단순히 넘어갔지만 공부를 해보기로 했다. 먼저 공부를 하고 나서 사용했어야 했는데 순서가 잘못되었지만 그래도 지금이라도 궁금해져서 다행이다 ㅎㅎ 제대..
2023.03.09 -
[iOS] super.viewDidLoad() 호출하는 이유
👉 시작 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } 프로젝트를 처음 생성하면 ViewController 에 ViewDidLoad()는 기본으로 구현되어 있는 메소드이다. 생명주기 메소드를 작성하다가 호출할 때마다 superClass를 작성하는 것이 자연스럽게 호출하게 되었다. 당연히 슈퍼클래스의 내용을 상속받아 재정의하는 의미라고는 알고 있었지만 까먹고 작성하지 않았을 때가 있었는 데 호출을 하지 않아도 에러가 나지 않았다. 이 부분에서 super.viewDidLoad() 메소드를 호출하는 이유가 궁금해져서 찾아보았다. 👉 SuperClass (슈퍼클래스) 를 호출..
2023.03.07 -
[iOS] AppDelegate와 SceneDelegate, App의 Life Cycle(생명주기)
👉 Life Cycle (생명주기) 생명주기란 앱의 최초 실행과 종료 사이에 발생하는 이벤트로 구성된다. 생명주기에는 App 생명주기와 ViewController 생명주기가 있다. 2023.02.24 - [iOS/iOS] - [iOS] ViewController의 생명주기(Life Cycle) 👉 AppDelegate와 SceneDelegate iOS 12 이전 iOS 13 이후 iOS 12 까지는 대부분 하나의 앱에 하나의 window였지만 iOS 13부터는 window의 개념이 scene으로 대체되고 하나의 앱에서 여러개의 scene을 가질 수 있다. 기존에는 한 번에 하나의 화면만 보여주었지만 이제는 동일한 앱을 스플릿뷰로 나눠서 실행할 수 있게 되었다. 이런 경우 사용자가 실제로 사용하는 앱은 하..
2023.02.24 -
[iOS] ViewController의 Life Cycle(생명주기)
👉 ViewController 뷰컨트롤러란 사용자 인터페이스를 관리하고 화면에 내용을 표시하는 데 사용되는 객체이다. 앱의 로직과 데이터를 조정하고 화면에 표시되는 내용을 관리한다. 뷰컨트롤러는 생명주기를 따르며 화면의상태변화에 따라 적절한 메소드를 호출하여 초기화, 데이터로딩, 화면전환, 리소스 해제 등을 관리한다. 뷰컨트롤러는 iOS앱의 핵심 구성요소 중 하나이며, 사용자 인터페이스와 앱의 동작을 관리하는 중요한 역할을 수행한다. ✔️ 역할 수행 화면 관리 : 앱의 각 화면을 담당하며 해당 화면의 뷰 계층 구조를 관리한다. 뷰컨트롤러는 화면의 모양과 동작을 결정하고 사용자 인터페이스 요소들을 관리하며 데이터와 뷰를 연결한다. 상태 관리 : 뷰컨트롤러는 화면 전환과 같은 상태변화에 대응하여 적절한 동작..
2023.02.24 -
[iOS] Frame 과 Bounds
👉 시작 Bounds 와 Frame 모두 뷰의 위치와 크기를 나타내는 UIView의 프로퍼티이다. 두가지의 차이점을 알아보자요. 👉 Frame https://developer.apple.com/documentation/uikit/uiview/1622621-frame 상위 뷰의 좌표 시스템에서 뷰의 위치와 사이즈를 나타낸다. frame이 나타내는 origin(x, y)는 슈퍼뷰의 원점을 (0, 0)으로 보고 원점으로부터 얼마나 떨어져있는 지를 나타낸다. 👉 Bounds https://developer.apple.com/documentation/uikit/uiview/1622580-bounds 자신의 좌표 시스템에서 뷰의 위치와 크기를 나타낸다. 자신의 좌표(default 값)이 (0, 0)이다. 👉 Fra..
2023.02.14 -
[iOS] SafeArea
👉 SafeArea 란? 아이폰X부터 상단의 노치가 등장하면서 SafeArea 가 나오게 되었다. 상단의 노치부분과 하단의 홈바부분을 제외한 영역을 말한다. 컨텐츠가 제대로 안전하게 보일 수 있는 부분이다. 세로 가로 👉 SafeArea 적용 SafeArea에 적용한 View Superview에 적용한 View 화면 전체를 다 채울 때에는 SafeArea를 적용하지 않을 수 있다. 원하는 부분의 제약조건(Constraint)을 Safe Area 에서 Superview 로 변경하면 된다. ✔️ SafeArea 적용 해제 ViewController에서 'Use Safe Area Layout Guides' 체크 해제를 하면 된다. 체크했을 때 체크 해제했을 때 SafeArea을 아예 사용하지 않고 이용이 가능..
2023.02.11 -
[iOS] 스토리보드 (Storyboard) 와 코드베이스 (CodeBase)
iOS 앱의 UI를 만들 때에는 스토리보드를 사용하거나 코드로 짜는 방법 두 가지가 있다. 처음 Xcode를 접하였을 때 기본적으로 Main.storyboard 파일이 생성되어 있어 이 방법을 먼저 사용할 것이다. 스토리보드로 사용하다 이제 문제점이 하나씩 나타날 것이고 그러면 코드UI로 넘어가는 것 같다. 그래서 이번에는 스토리보드의 장단점과 코드UI 와의 차이를 알아보려고 한다. 👉 스토리보드 (Storyboard) 직관적으로 앱의 뷰와 흐름을 알 수 있다. 소스코드를 보지 않아도 UI 확인이 가능하다. 결과물을 예측하기 쉽다. 화면 로딩이 오래걸린다. 재사용성이 떨어진다. IBOutlet, IBAction 등의 연결이 끊어지면 찾기가 어렵다. 여러 명이 작업할 때 conflict가 발생할 경우 해결..
2022.12.01 -
[iOS] 스토리보드 컴포넌트와 AutoLayout 개념
iOS 구성 Swift에서 화면 구성하는 방식 스토리보드 가장 기본이 되는 방식 하나의 파일로 여러 개의 View를 가질 수 있음 1개의 View는 1개의 Controller를 가질 수 있음 Swift UI 코드작성 Stroyboard iOS 앱의 사용자 인터페이스를 시각적으로 표현하여 컨텐츠 화면과 화면 간의 연결을 보여주는 도구 스토리보드는 일련의 Scenes로 구성, 각 scene은 ViewController와 해당 View를 나타냄 View iOS 앱 사용자 인터페이스의 기본 구성요소 앱의 컨텐츠를 화면에 그리거나 구성 가능 ViewController View에서 일어나는 모든 상호작용을 관리 ViewController는 하나의 루트 View만 관리 해당 View가 여러 개의 서브 View들을 가..
2022.07.06 -
[iOS] info.plist와 AppProject 속성
1. info.plist / AppProject 속성 조사 1) info. plist 앱이 실행되는 데 필요한 정보(앱의 기본정보)를 저장하는 파일 1-1) info.plist의 속성 이름 설명 Application Scene Manifest 앱의 장면 기반 라이프사이클 지원에 대한 정 - Enable Multiple Windows 여러 Scene을 설정할 수 있는 지 체크하는 속성 - Scene Configuration 새 Scene을 만들 때 UIKit의 기본 설정값을 설정 - Application Session Role 2가지 역할 (Application / External Display) - Configuration Name 설정 이름 - Delegate Class Name 대신 코드 실행해줄 클..
2022.07.01