본문 바로가기
반응형

iOS, Swift12

Swift enum 총정리 오늘은 swift의 enum의 기본적인 정의 방법부터,switch와 함께 다루는 방법들까지,다양한 예제와 함께 정리하겠습니다.1. enum 의 정의와 기본 사용방법enum은 관련된 값들의 그룹을 정의하게 해주는데요.아래와 같이 정의해서 사용합니다. enum Direction { case north case south case east case west} 이는 좀 더 간략하게 한줄로 정의할 수도 있습니다. enum Direction { case north, south, east, west } 이 값에 접근할 때는,아래와 같이 해 줍니다. let currentDirection = Direction.north swift의 다른 속성들에 접근할 때처럼,타입이 명확할 때는 아래와 같이 축약도.. 2025. 3. 31.
SwiftUI body에 사용할 수 없는 것과 대안들 : 변수선언, 조건문, 반복문 오늘은 SwiftUI body에 사용할 수 없는 것들에 대해 정리하겠습니다. 1. SwiftUI body에 사용할 수 없는 것들SwiftUI는 명령형이 아닌,선언형 프로그래밍 방식을 따르는데요.SwiftUI View의 body에서는,UI의 상태와 구조만을 '선언'하도록 하고 있습니다. 그래서, body안에 사용할 수 없는 것들이 있는데요.이에 대해 명확히 알아 둘 필요가 있습니다. SwiftUI body에 사용할 수 없는 것들은 다음과 같습니다.변수 선언 (var 키워드)명령형 조건문 (if, switch 등을 값 할당에 사용할 때)명령형 반복문 (for, while 등)예를 들어,아래와 같이 코드를 작성하면,컴파일 에러가 발생합니다.  struct ContentView: View { var bod.. 2025. 3. 22.
iOS Image Slicing 해서 resizableImage 만들기 앱을 만들다 보면,말풍선처럼 특정부분을 늘려서 사용해야하는 경우가 있는데요.안드로이드에서는 9patch라는 것을 이용했는데요.ios에서는 Slicing한 후, Stretch(늘어나도록) 설정을 해서 이와 같은 효과를 얻을 수 있습니다.오히려 이미지에 여기저기 칠하지 않아도 되어서 좋기도 합니다.오늘은 이 방법에 대해 정리하겠습니다. 1. Asset Catalog에서 Slicing 설정 찾기AssetCatalog에서 직접 이미지를 슬라이싱 할 수 있는데요.먼저 아래와 같이 Slicing 섹션을 찾아서, Slices와 Center를 설정해 줍니다.Xcode의 Asset Catalog에서 이미지 선택Attributes Inspector에서 'Slicing' 섹션 찾기(하단)Slices: 'Horizontal .. 2025. 3. 22.
iOS 앱 최소버전 결정 기준 정리 iOS앱을 개발을 시작하면,최소버전을 몇으로 해야할지 결정해야 하는 순간이 옵니다.오늘은 이럴 때,어떤 기준들을 가지고 결정할 수 있는지,정리해 보겠습니다. 1. 애플이 제시하는 사용 현황가장 먼저 살펴볼 것은 iOS버전별로,사용현황을 보는 것인데요.구체적인 정보를 알고 있는 애플은,이 정보를 웹사이트에 게시하고 있습니다.2025년 1월 기준으로는 아래와 같은데요.   이 정보는 구글에서 "ios appstore 지원"이라고 검색하면,처음으로 나오는 애플의 사이트에서 얻을 수 있는데요.이것만 보면, ios16이하는 5%밖에 안되는 군요. 그런데 사실 우리가 고민하는 지점은,iOS15인가 16인가하는 경우가 많습니다.SwiftUI를 사용하면서,async 등 이런저런 기능을 사용하면서,최소한의 버전을 코딩하.. 2025. 3. 21.
자주 사용하는 XCode 단축키 총정리 오늘은 XCode에서 자주 사용하는 단축키에 대해 총정리하겠습니다. 1. 코드 자동완성자동완성 단축키는,에디터를 사용할 때,가장 먼저 알아두어야 할 단축키이지요.아래와 같이 해주면 됩니다.Ctrl + Space또는 아래 명령어를 사용해도 가능합니다.Ctrl + . 2. Menu 검색하기(Quick Actions)아래 단축키로 메뉴를 검색해서 실행할 수도 있습니다.Cmd + Shift + Axcode에서 단축키 하나만 알아야 한다면,이것만 외울것 같습니다.   같이 알아두면 좋을 단축키가 아래인데요.마우스 우측클릭과 유사하게,선택할 수 있는 컨텍스트 메뉴들이 나옵니다.Ctrl + Click참고로 rename의 경우,미리 지정된 단축키가 없어서,컨텍스트 메뉴에서 접근하기도 하는데요. 아래와 같이 Refact.. 2025. 3. 20.
SwiftUI 빈 공간에 사용하는 Color.clear 와 EmptyView 오늘은 SwiftUI에서 빈공간에 사용하는,Color.clear와 EmptyView에 대해 정리하겠습니다. 1. Color.clear와 EmptyViewColor.clear와 EmptyView()는,둘다 시각적으로 보이지 않는 요소를 만들 때 사용되는데요. 하지만 실제 사용할 때 둘은 큰 차이가 있습니다.  Color.clearEmptyView주요 용도투명 오버레이, 공간 예약, 이벤트 캡처아무것도 표시 안 함을 명시적으로 나타낼 때 사용공간 차지지정된 크기의 공간을 차지함지정하지 않으면,부모 뷰가 제공하는 공간을 채움공간을 전혀 차지하지 않음사용자 상호작용가능 (.contentShape 등으로 설정 가능)공간이 없어 불가능Modifer적용가능대부분 불가능onAppear/onDisappear트리거 됨트리.. 2025. 3. 19.
SwiftUI 커스텀 폰트(Font) 사용하기 오늘은 swiftui에서 커스텀 폰트를 지정해서 사용하는 방법에 대해 정리하겠습니다. 1. Font 등록하기폰트를 등록하기 전에,먼저 폰트를 프로젝트에 복사해 줍니다.이 때 어느 그룹에 넣어서 관리하건 문제되지 않습니다.그룹은 단순히 논리적인 구조로 실제하는 물리적 구분이 아니기 때문입니다. 그럼 이제 프로젝트 설정에서 아래와 같은 순서로,Font를 등록해 줍니다.좌측의 네비게이터에서 최상단의 프로젝트 선택'Info' 탭 클릭여러 섹션 중, 맨 위의 'Custom iOS Target Properties' 섹션 열기"+" 버튼을 클릭하여 새 항목을 추가키 이름으로 'Fonts provided by application' 검색해 선택 후 아이템 추가(배열 타입임)배열 항목 옆의 "+" 버튼을 클릭하여 첫 .. 2025. 3. 19.
Swift Parameter Label(매개변수 라벨) as 사용방법 정리 오늘은 Swift Parameter Label(매개변수 라벨)의 사용방법에 대해 정리해 보겠습니다. 1. Swift Parameter Label(매개변수 라벨) asSwift에서 Parameter Label(매개변수 라벨) as는,함수를 호출할 때,각 인자가 어떤 목적으로 사용되는지 알려주어,코드의 가독성을 높여줍니다. as는 "~로써", "~로"라는 의미를 가지고 있는데요.타입자체를 인자로 받는 함수에서,해당 타입이 어떻게 사용될 것인지를 표현할 때 유용합니다.  코드를 보면서 이해해 볼까요? 아래 함수는 T타입을 받아, U타입으로 변환해주는 함수입니다.여기서 as는 특별한 기능을 하는 것은 아니고,하나의 라벨로써,convert함수호출시 어떤 타입으로(또는 타입으로써) 함수에서 사용될지,문장처럼 편하게.. 2025. 3. 15.
Swift Closure의 강한 캡처와 [weak self]의 필요성 오늘은 Swift Closure의 강한 캡처와 [weak self]의 필요성에 대해 알아보겠습니다. 1. Closure의 강한 캡처클로저는 외부 변수를 "캡처"하여 내부에서 사용할 수 있는데요.참조하는 객체를 강하게(strong) 캡처합니다.이로 인해 다음과 같은 문제가 발생할 수 있는데요.강한 참조 순환(메모리 누수): 만약 클래스의 프로퍼티가 클로저를 가지고 있고, 그 클로저가 self를 캡처한다면, 클래스 인스턴스와 클로저가 서로를 강하게 참조하게 되어 메모리에서 해제되지 않아,메모리 누수 발생가능의도치 않은 동작: 객체가 이미 소멸되었어야 하는데 클로저에 의해 계속 살아있으면, 예상치 못한 동작이 발생할 수 있습니다. 2. [weak self]의 필요성이럴 때 필요한 것이, [weak self]인.. 2025. 3. 14.
Swift inout parameter(파라미터) 함수 마스터하기 오늘은 Swift의 inout parameter(파라미터)를 사용하는 함수에 대해 정리하고 마스터해 보겠습니다. 1. inout 파라미터1-1. inout 파라미터원래 Swift에서 함수나 메서드에 전달되는 파라미터는,상수(constants)로 취급되어 함수 내에서 수정할 수 없습니다.하지만 파라미터를 아래와 같이 inout 키워드와 함께 표시하면,원래 상수라면 안 되는 다음의 일들이 가능해집니다.함수 내에서 파라미터를 수정 가능함수가 호출될 때 값을 전달받아 함수 내부에서 수정한 후, 수정된 값을 다시 원래 변수에 반영func makeDouble(number: inout Int) { number *= 2}  위 함수는 아래와 같이 사용해 주어야 합니다.주의할 점은, inout 파라미터를 전달할 때.. 2025. 3. 13.
Swift guard let 이용한 Optional unwrapping 방법 오늘은 swift에서 guard let 이용한 Optional unwrapping 방법을 알아보겠습니다. 1. guard let1-1. guard letguard let은 옵셔널 값이 nil이 아닌지 확인하고, nil이 아니라면 옵셔널을 언래핑하는 방법입니다. if let과 달리, guard let은 언래핑된 값을 함수나 블록의 나머지 부분에서 사용할 수 있게 해줍니다. guard let 사용시,nil일 경우에 대한 else 블록을 반드시 구현해야 하고요.이 블록안에서,return, break, continue, throw 등으로,현재 스코프를 벗어나는 코드도 같이 작성해 주어야 합니다. guard let unwrappedValue = optionalValue else { // optionalVa.. 2025. 3. 12.
Swift 불투명 타입 some은 왜 필요할까? SwiftUI를 접하다 보면,Opaque Type(불투명 타입)인 some과 만나게 됩니다.대체 이건 뭐고 왜 필요한 것일까요?실마리를 찾기 위해,Opaque Type(불투명 타입)과 SwiftUI에 대해 알아보겠습니다. 1. Opaque Type(불투명 타입) 과 SwiftUI불투명 타입이 어떤 건지 비유를 통해 알아보겠습니다. 만약 친구에게 "나 과일 하나 가져올게" 라고 말했다고 가정해 보겠습니다.어떤 과일을 가져올지 정확히 말하지 않았지만,분명한 것은 과일의 일종을 가져온다는 점입니다. "뭐가 될지는 모르겠지만,마트에 들려서,과일종류를 사올것이다" 이런 거죠.  SwiftUI에서도 마찬가지입니다.some을 사용하면 다음의 의미를 가지게 됩니다."이것은 View의 일종인데,Text일 수도, But.. 2025. 3. 8.