IOS [ 개념정리 ](11)
-
23.11.16 딕셔너리(Dictionary), 집합(Set), 배열(Array)의 개념
딕셔너리 특징: 키-값 쌍의 비순서형 컬렉션 각 키는 고유해야 하며, 값은 중복될 수 있음 순서가 없기 때문에 인덱스로 요소에 접근할 수 없음 var person = ["name": "John", "age": 25, "city": "New York"] person["gender"] = "Male" let cityName = person["city"] // Optional("New York") 배열 특징: 순서가 있는 데이터의 컬렉션 각 요소는 고유한 인덱스를 가지며, 인덱스는 0부터 시작함 동일한 데이터 타입의 요소를 저장 크기가 동적으로 조절 가능하며, 요소를 추가하거나 제거할 수 있음 var numbers = [1, 2, 3, 4, 5] numbers.append(6) // [1, 2, 3, 4, 5..
2023.11.17 -
23.11.15 @Main의 개념 / iOS 앱 내에서 메모리 관리를 최적화하기 위한 방법 / 고차함수(map, filter, reduce)의 개념
@Main 어트리뷰트는 Swift 5.5에서 도입된 새로운 어트리뷰트로, 비동기적인 작업 중에 메인 스레드에서 코드를 실행하도록 하는 역할을 한다. 이 어트리뷰트는 Swift concurrency 모델에서 사용되며, 특히 async 함수나 블록에서 메인 스레드에서 UI 업데이트와 같은 작업을 수행할 때 유용하다. 예시 코드 👇 import UIKit class MyViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() fetchDataAndUIUpdate() } func fetchDataAndUIUpdate() { // 백그라운드에서 비동기적으로 데이터를 가져옴 Task { let data = await fe..
2023.11.15 -
23.11.10 hugging과 resistance의 개념정리 / 뷰 컨트롤러의 라이프 사이클 개념정리
hugging과 compressionResistance는 Auto Layout에서 뷰의 크기와 내용에 대한 우선순위를 제어하는 두 가지 속성. 이 속성들은 주로 스택 뷰 (Stack View) 내에서 뷰의 크기를 결정하는 데 사용된다. 먼저 사전적의미 로는 Content Hugging (Hugging): Content Hugging은 뷰가 자신의 내용(content)에 "붙어있으려" 하는 정도를 나타냅니다. 뷰의 hugging priority가 높을수록 해당 뷰는 자신의 내용에 더 "붙어" 크기를 줄입니다. Priority 값이 높을수록 해당 축(가로 또는 세로)에서 크기를 유지하는 것이 더 우선됩니다. 라는데, 잘 설명해보자면 예를 들어서 , 다음 이미지를 보면 왼쪽뷰보다 오른쪽뷰가 더 같은선상에서 크..
2023.11.10 -
23.11.09 ARC 개념정리 / TableVie 개념정리
ARC 는 Automatic Reference Counting 의 약자이다. 핵심개념은 참조형태를 추적하여서 , 현재 사용하지않아도 되는 참조 프로세스들을 자동으로 메모리에서 제거해줌으로써 메모리 누수를 방지해주는 것이다. Swift에서는 이 기능이 기본적으로 활성화 되어있고 개발자가 수동으로 처리해주지않아도된다. 다만 강한 순환참조와 같은 특정상황에서는 ARC를 수동으로 제어하는 방법도 고려해볼 수 있다. . . . 테이블뷰는 데이터소스 & 델리게이트로 이루어진 UI적 요소이다. 테이블 뷰를 사용함으로써 UI를 조금더 쉽게 관리하고 동적으로 표현 가능하다. 데이터소스 & 델리게이트에대한 설명은 다음과 같다. 데이터 소스 (Data Source): - 테이블 뷰에 표시되는 데이터의 원본을 정의함 - 데이..
2023.11.09 -
23.11.08 앱의 상태 / 스토리보드를 이용할때의 장단점
통상정으로 앱의 상태를 5가지정도로 나누는데 , 다음과같다 Not Running = 앱이 아직 시작되지않거나 종료된상태 Inactive = 앱이 실행중이긴하지만 비활성화인상태, 대개 백그라운드에 있는상황이거나 , 활성화 되려면 다른앱이나 동작을 완료해야하는 경우에 발생 Active = 앱이 사용자와 상호 작용하며 활성화된 상태 ( 사용자가 이용중인 상태 ) Background = 앱이 백그라운드에서 실행중이며 활성화 되지 않은 상태. Suspended = 앱이 백그라운드에서 실행중이지만 아무런 활동도 수행하지 않는 , 일시 중단된 상태. 시스템 자체에서 메모리관리를 위해서 실행을 중지하는 경우가 많음 . . . 다음은 코드가아닌 스토리보드를 이용했을때의 장단점인데 , 스토리 보드를 사용하면 , 프로그래밍..
2023.11.08 -
23.11.1 옵셔널(Optional)의 개념과 확장(Extension)의 개념
옵셔널(Optional) 은 Swift 언어의 중요한 특징 중 하나로, 값이 존재할 수도 있고 존재하지 않을 수도 있는 값을 나타내는 데이터 타입이다. var optionalValue: Int? // Int?은 Int 타입의 옵셔널 변수를 나타냅니다. 위의 코드에서 보면 , optionalValue 라는 Int 값이 존재하지않으면 오류가 발생할 수 있기때문에 , 오류 방지를 위해 만약 optionalValue 에 값이 없으면 nil을 할당시켜주세요 라고 해주는 ? 를 뒤에다 붙여주는것이다. 그러나 옵셔널로 지정을해두었지만 , 이 값에는 확실히 값이 들어갈거야 ! 하는 변수가 있을 수 있는데 그럴땐 let unwrappedNumber = optionalNumber! // 옵셔널 해제 위 코드와 같이 ! 느..
2023.11.01 -
23.10.31 Grand Central Dispatch (GCD)와 Operation Queue의 차이점 / Delegate pattern 에 대한 설명
Grand Central Dispatch (GCD)와 Operation Queue는 iOS 및 macOS 앱에서 다중 스레딩 및 병렬 프로그래밍을 위해 사용되는 두 가지 주요 다중 스레딩 기술입니다. 다음은 GCD와 Operation Queue의 주요 차이점입니다 *다중 스레딩 : 하나의 컴퓨터 프로세스에서 여러개의 작업을 수행하는것 ( 컴퓨터 성능 최적화 & 응답시간 개선 ) *병렬 프로그래밍 : 다중 코어를 활용하여 작업을 병렬로 처리하는과정을통해 시스템성능을 향상시키는것 * 다중 스레딩이 병렬 프로그래밍안에 속해있으며 , 다중코어를 활용하는 각 코어 하나들이 다중스레딩으로 동작할 수 있음. GCD: GCD는 더 저수준의 API로, 간단하고 빠른 병렬 처리를 위한 기본 도구를 제공합니다. GCD를 사..
2023.11.01 -
23.10.30 Codable을 이용한 JSON 디코딩법 / Auto Layout 에서 스택뷰와 같은 컨테이너 뷰의 역할과 사용법
먼저 디코딩을 위한 JSON 데이터와 일치하는 데이터모델을 정의해준다. { "name": "John", "age": 30, "email": "john@example.com" } 위의 예시 데이터 모델을 보면 , name , age , email 의 세가지 정보를 받게끔 정해두었다. struct User: Codable { let name: String let age: Int let email: String } 그리고 name , age , email 의 세가지 정보의 형태를 각각 지정해준다. import Foundation let json = """ { "name": "John", "age": 30, "email": "john@example.com" } """.data(using: .utf8)! do {..
2023.10.30 -
23.10.27 프로퍼티 옵저버(Property Observer)didSet, willSet 의 개념 / bound&frame 의 차이점
프로퍼티 옵저버(Property Observer)는 Swift 언어의 기능 중 하나로, 클래스, 구조체, 또는 열거형의 저장 프로퍼티의 값 변화를 감시하고 그에 따른 동작을 수행할 수 있게 해준다. 자 , 일단 프로퍼티 랑 옵저버 라는 개념조차도 생소할텐데 , 값 변화를 감시한다는게 무슨의도를 가지고 어떤상황에 쓰는건지 감도 안올 것 이다. 먼저 프로퍼티란 ? 변수 또는 상수의 일반화된 용어로, 클래스, 구조체, 열거형 등의 데이터 구조 내에서 데이터를 저장하거나 제공하는 역할을 한다. 고로 // 저장 프로퍼티 struct Person { var name: String // 저장 프로퍼티 let age: Int // 저장 프로퍼티 (상수) } // 계산 프로퍼티 struct Circle { var rad..
2023.10.27 -
23.10.23 JSON 데이터 / protocol ( 약간 ) 의 개념정리 1
JSON ( JavaScript Object Notation ) 키 - 값 쌍 으로 이루어진 데이터 오브젝트를 전달하기위한 인간이 읽을만한 텍스트를 사용하는 개방형 포맷. JSON 데이터를 많이 쓰게되는 경우 = 어플리케이션을 만들때 API 호출을 많이하게되고 , API호출로 받는 데이터의 형식이 JSON이기 때문에 JSON을 다루는것이 필수이다. 그럼 이 JSON 데이터를 사용하기위해서 Encoding 하고 Decoding 하는 과정이 필요한데, 과연 Encoding 과 Decoding이 뭘까? 간단하게 Encoding 은 Swift에서 쓰는 언어를 JSON문자열로 변경하는 것 이고 , Decoding 은 반대의 경우로 JSON문자를 Swift언어로 변경하는 것 이다. 이 Encoding Decodin..
2023.10.24