프로그래밍공부(Programming Study)/IOS 개발12 SwiftUI에서 View를 `var`, `struct`, `class`로 선언하는 올바른 방법 1. var로 선언한 ViewSwiftUI에서 var를 이용해 View를 선언할 수 있습니다. 이 경우, 주로 struct나 class 안에서 계산 속성(computed property)으로 View를 정의할 때 사용됩니다.struct ContentView: View { var body: some View { Text("Hello, SwiftUI!") }}특징계산 속성으로 View를 생성하므로 매번 새로운 View를 반환합니다.간단한 UI 요소를 반환하는 경우에 적합합니다.2. struct로 선언한 ViewSwiftUI에서 View는 주로 구조체(struct)로 정의됩니다. SwiftUI의 모든 기본 UI 컴포넌트는 구조체로 이루어져 있으며, 이러한 구조체는 값 타입(value t.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 11. 11. Swift의 `mutating` 키워드, 언제 사용해야 할까? 1. mutating 키워드란?mutating 키워드는 Struct나 Enum에서 프로퍼티 값을 변경할 수 있는 메소드를 정의할 때 사용합니다. Struct는 값 타입이기 때문에, 기본적으로 모든 프로퍼티가 불변(immutable)으로 취급됩니다. 만약 Struct 내에서 프로퍼티를 변경해야 하는 메소드를 정의하고자 한다면, 메소드 앞에 mutating 키워드를 추가하여 변경 가능함을 명시해야 합니다.2. mutating 키워드가 필요한 이유Swift는 값 타입(Struct, Enum)과 참조 타입(Class)을 명확히 구분하여 안전하고 예측 가능한 코드를 작성할 수 있도록 합니다. Struct는 값 타입이므로 일반적으로 불변성을 유지하려는 특성이 있습니다. 이는 Struct가 안정적인 데이터를 제공하고.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 11. 11. SwiftUI에서 Class와 Struct, 언제 어떻게 사용해야 할까? Swift 초보자를 위한 가이드 1. Swift의 Class와 Struct 기본 개념Swift에서 Class와 Struct는 데이터와 기능을 캡슐화하여 효율적으로 관리할 수 있도록 합니다. 그러나 이 두 가지는 서로 다른 특성을 지니고 있습니다.Class는 참조 타입으로, 객체가 복사되지 않고 동일한 인스턴스를 여러 곳에서 참조할 수 있습니다. 이는 하나의 객체를 여러 위치에서 접근하고 수정할 수 있다는 의미입니다.Struct는 값 타입으로, 변수를 전달하거나 복사할 때마다 새로운 인스턴스를 생성하여 독립적인 상태를 유지합니다. 그래서 데이터의 불변성을 유지하고 예상치 못한 데이터 변경을 방지하기에 유리합니다.2. Class와 Struct의 주요 차이점특성ClassStruct타입참조 타입값 타입상속가능불가능프로토콜 채택가능가능데이터 공.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 11. 11. Swift에서 클래스의 강한 참조, 약한 참조, unowned 참조 완벽 가이드 1. 강한 참조(Strong Reference)란?Swift에서 강한 참조(Strong Reference)는 객체의 소유권을 유지하는 참조 방식입니다. 기본적으로 모든 참조는 강한 참조로 설정되며, 객체가 다른 객체를 강한 참조하면 참조 카운트가 증가하여 그 객체가 메모리에서 해제되지 않도록 보장됩니다.특징기본 참조 방식으로, 객체의 소유권을 유지합니다.객체를 참조하는 동안 메모리에서 해제되지 않습니다.순환 참조를 발생시킬 수 있으므로, 상호 참조가 필요한 경우 주의해야 합니다.사용 예시강한 참조는 대부분의 상황에서 사용되며, 객체가 독립적으로 존재할 때 적합합니다.class Person { var name: String var pet: Pet? // 기본적으로 강한 참조 init(nam.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 11. 10. Swift 클로저와 콜백 함수의 모든 것 - 개념, 문법, 특징, 코드 예제 완벽 정리 1. 클로저와 콜백 함수의 기본 개념클로저(Closure)클로저는 코드의 특정 동작을 캡슐화하여 전달할 수 있는 코드 블록입니다. Swift에서 클로저는 변수나 상수에 저장되거나, 함수의 매개변수로 전달될 수 있는 독립적인 코드 블록으로, 함수와 유사한 역할을 합니다.Swift의 클로저는 주로 비동기 작업이나 일회성 작업을 처리하는 데 사용되며, 익명 함수처럼 이름 없이 사용할 수 있어 코드가 유연해집니다.콜백 함수(Callback Function)콜백 함수는 특정 작업이 완료된 후 실행되는 함수로, 주로 비동기 작업에서 사용됩니다. 비동기 작업이 끝난 후, 결과를 처리하거나 이후 동작을 수행할 때 콜백 함수를 호출하여 필요한 작업을 처리합니다. Swift에서는 클로저가 콜백 함수로 사용되어 비동기 작업.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 11. 9. Swift 프로퍼티 초기화와 앱 진입점의 엄격한 초기화 규칙 1. Swift의 프로퍼티 초기화 규칙Swift에서 프로퍼티는 객체 생성 시 초기화되어야 하는 중요한 요소입니다. Swift는 안정성과 오류 방지를 위해 프로퍼티 초기화에 대해 매우 엄격한 규칙을 가지고 있습니다. Swift의 클래스와 구조체에서는 모든 저장 프로퍼티가 인스턴스가 생성되기 전에 초기화되어야 하며, 초기화되지 않은 상태로 방치된 프로퍼티가 없어야 합니다. 이를 통해 런타임 오류를 방지하고 안정적인 코드 실행을 보장합니다.프로퍼티 초기화 규칙 예시struct Person { var name: String var age: Int init(name: String, age: Int) { self.name = name self.age = age }}위 .. 프로그래밍공부(Programming Study)/IOS 개발 2024. 11. 9. SwiftUI에서 some View와 Opaque Return Type 그리고 Preview의 개념과 활용법 1. some View의 개념SwiftUI에서 some View는 Swift의 Opaque Return Type 기능을 사용하여 뷰를 정의할 때 반환 타입을 some View로 명시할 수 있게 합니다. 이는 Swift의 타입 시스템에서 구체적인 타입을 감추고 View 프로토콜을 준수하는 타입임을 보장하는 역할을 합니다. SwiftUI에서는 body 프로퍼티를 통해 화면에 나타낼 콘텐츠를 정의하는데, 이때 반환 타입으로 some View를 사용하는 것이 일반적입니다.var body: some View { Text("Hello, SwiftUI!")}위 코드에서 body 프로퍼티는 Text 타입의 뷰를 반환하지만, some View를 사용하여 타입을 구체적으로 명시하지 않습니다. 이렇게 반환 타입을 구체.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 10. 28. Swift에서 언더스코어(_)의 다양한 사용 방법: 값 무시부터 패턴 매칭까지 1. 언더스코어의 개념언더스코어(_)는 Swift에서 여러 상황에서 쓰일 수 있는 다목적 문법 요소입니다. 이를 통해 필요하지 않은 값을 무시하거나 외부 파라미터 레이블을 생략할 수 있습니다. 또한, 패턴 매칭에서 값을 추출하지 않으려는 경우에도 자주 사용됩니다.2. 언더스코어의 주요 사용처2.1 값 무시변수나 튜플에서 특정 값을 무시할 때 언더스코어를 사용합니다. 이를 통해 코드를 간결하게 만들 수 있습니다.let person = (name: "Alice", age: 30)let (_, age) = person // 이름은 무시하고 나이만 사용print(age) // 출력: 30이와 같은 경우, 튜플의 일부 값이 필요하지 않다면, 언더스코어로 그 값을 무시할 수 있습니다.2.2 외부 파라미터 레이블.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 10. 25. Swift에서 extension을 사용하는 이유와 실무 활용 방법 1. extension이란 무엇인가?Swift에서 extension(확장)은 기존 클래스, 구조체, 열거형, 또는 프로토콜에 새로운 기능을 추가할 수 있게 해주는 기능입니다. 기존의 소스 코드를 변경하지 않고도 타입을 확장할 수 있어 코드의 재사용성을 높이고 유지보수를 용이하게 해줍니다. 중요한 점은 extension을 사용해 추가할 수 있는 것은 새로운 메서드, 계산 속성, 서브스크립트, 초기화 메서드 등이며, 기존의 속성이나 메서드를 재정의할 수는 없습니다.2. extension을 사용하는 주요 이유기존 타입의 기능 확장:기존의 타입(예: String, Int, 사용자 정의 클래스 등)에 새로운 기능을 추가하고 싶을 때 사용합니다. 이는 특히 프레임워크나 라이브러리의 코드를 수정할 수 없을 때 유용합.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 10. 24. SwiftUI에서 다양한 접근자 종류와 실무 사용 방법 1. Swift의 접근 제어자 종류 개요Swift에서 접근 제어자는 코드 내에서 특정 요소(클래스, 구조체, 함수, 변수 등)의 접근 범위를 제한하는 역할을 합니다. 이를 통해 개발자는 불필요한 접근을 제한하고, 코드의 안전성과 일관성을 유지할 수 있습니다. Swift는 5가지 주요 접근 제어자를 제공합니다: open, public, internal, fileprivate, private.2. 접근 제어자의 종류 및 사용 사례open특징: Swift에서 가장 개방적인 접근 제어자입니다. open으로 정의된 클래스는 모듈 외부에서도 상속이 가능하고, 오버라이드가 가능합니다.사용 예: 오픈소스 라이브러리에서 주로 사용됩니다.open class OpenClass { open func openMethod(.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 10. 24. SwiftUI에서 Hashable 프로토콜과 ObservableObject, StateObject, EnvironmentObject, Published, State, Binding 어노테이션의 역할 1. Hashable 프로토콜의 역할개념:Hashable 프로토콜은 Swift에서 객체를 해시할 수 있도록 하는 프로토콜입니다. 이는 객체가 집합(Set)이나 딕셔너리(Dictionary)의 키로 사용될 수 있게 해줍니다. Hashable을 구현하면 객체의 고유성을 정의하고 데이터 구조에서 쉽게 관리할 수 있습니다.특징:Hashable은 Equatable을 상속받습니다.hash(into:) 메서드를 구현하여 객체의 해시 값을 생성합니다.struct Person: Hashable { let id: Int let name: String func hash(into hasher: inout Hasher) { hasher.combine(id) hasher.combine(n.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 10. 20. Swift에서 View, ViewModel, Service에 대한 개념과 역할 1. View, ViewModel, Service란?View, ViewModel, 그리고 Service는 iOS 앱 개발에서 흔히 사용되는 MVVM 패턴(Model-View-ViewModel)에서 중요한 요소입니다. 이 패턴은 코드의 재사용성과 유지보수성을 높이기 위해 고안되었습니다.View: 사용자에게 보여지는 UI를 담당하며, 사용자 입력을 받습니다.ViewModel: 비즈니스 로직을 포함하며, View와 Model 사이의 중재 역할을 합니다. View에서 발생한 이벤트를 처리하고, Model의 데이터를 가공하여 View에 전달합니다.Service: 외부 서비스(예: API 호출, 데이터베이스 처리)를 관리하는 계층으로, 데이터를 ViewModel에 제공합니다.2. MVVM 패턴에서의 View, Vi.. 프로그래밍공부(Programming Study)/IOS 개발 2024. 10. 17. 이전 1 다음 728x90