본문 바로가기

IOS11

[SwiftUI] 링크도 게으름이 필요해: NavigationLink를 Lazy하게 안녕하세요. 로디입니다. SwiftUI로 앱을 개발하다 보면 자연스럽게 만나게 되는 친구가 있죠. 바로 NavigationLink입니다.오늘은 NavigationLink에서 메모리 사용을 최적화하는 기법에 대해 알아보려고 합니다. 뷰 간의 네비게이션을 손쉽게 처리해주는 NavigationLink 요녀석, 처음엔 아주 사랑스러운데, 쓰다 보면 뭔가 불편함을 느낄 때가 있습니다.  기본적으로 NavigationLink는 화면에 나타나는 순간, 링크의 목적지(destination)를 미리 생성해버립니다. 작은 화면이나 간단한 뷰라면 상관없지만, 복잡한 화면이거나 무거운 데이터를 다루는 경우라면 이야기가 달라집니다. 무거운 뷰를 미리 생성해둔다..? 메모리 폭행범인가요?..🥲 아직 쓰지도 않는 뷰의 메모리를 .. 2024. 8. 18.
[PhotoKit] 0. PhotoKit 소개 PhotoKitPhotos 앱이 관리하는 이미지와 비디오 Asset들(iCloud Photos 및 Live Photos도 포함)을 작업해야할때 사용하는 프레임워크.!Photokit을 사용하면 Photos 앱이 iOS, MacOS, TVOS 및 VisionOS에서 관리하는 이미지 및 비디오 Asset에 접근할 수 있음.사용자의 사진을 편집하거나 표시하거나 앨범, 순간 및 공유 앨범과 같은 Asset의 Collection을 관리 할 수 ​​있음.이 프레임워크는 사용자의 기기와 iCloud에 있는 사진에 액세스 할 수 있도록 해줌.   앱에서 사람의 사진에 액세스하는 것 외에도 앱 확장을 구축하고 iOS 또는 MacOS의 사진 앱에 직접 앱 기능을 통합 할 수 있음.앱을 앱 스토어에 제출할 때 앱 번들에 앱 .. 2024. 8. 3.
[Swift] inout 매개변수 안녕하세요 로디입니다. 오늘은 Swift의 inout 키워드에 대해서 간단하게 정리하겠습니다. Swift에서, 함수의 매개변수(parameter)로 전달되는 "값 타입"은 기본적으로 상수(let)입니다.* 값 타입Swift의 값 타입은 구조체(struct)를 사용하여 표시합니다. 예를 들어 String, Int, Array, Dictionary 등. 그렇기에, 함수의 body 내부에서 매개변수로 전달받은 값을 바꾸는 것은 불가능합니다.아래와 같이 매개변수 값을 바꾸려고하면 컴파일러가 에러를 표시하죠. 그렇다면 함수 내부에서 매개변수의 값을 바꾸는 게 영영 불가능할까요?아뇨, 매개변수를 inout 키워드를 이용해 inout 매개변수로 정의하면 가능합니다. Swift의 인아웃 매개변수(In-Out Param.. 2024. 7. 19.
01. 진짜 쇼핑몰 구축하기 안녕하세요 로디입니다. 온라인 쇼핑몰(e-commerce) 사이트와 앱을 온전하게 운영해보고 싶은 욕심이 생겼습니다.  하지만 온라인 쇼핑몰을 구축하기 위해서는 도메인에 대한 이해가 깔려있어야하고, 개발 인력도 필요합니다.저는 쿠팡으로 가끔 로켓배송만 시켜봤지 내부 프로세스가 어떻게 돌아가는지도 모릅니다. 또 프로젝트는 저 혼자 진행해야하죠. 그래서 무작정 쇼핑몰 대행 솔루션들과 컬럼들을 리서치 해봤습니다.찾아볼수록 생각보다 쇼핑몰 서비스를 처음부터 만드려면 그 사이즈가 만만치 않아보였습니다.재미는 있겠으나.. 가능성이 수익성이 현저히 적은 프로젝트로 평생 백수 신분을 유지하고 싶지는 않았습니다.  현재 상황에서 쇼핑몰 서비스를 개발하기 위해서는 만들어진 오픈소스를 찾아 커스텀하는게 훨씬 빠르겠다는 생각.. 2024. 5. 10.
[iOS] MapView | 공간 데이터 처리하기 - Geojson, ESRI Shapefile 보호되어 있는 글 입니다. 2024. 3. 15.
[iOS] 사용자에게 알림 보내기 - User Notification Framework 보호되어 있는 글 입니다. 2024. 1. 28.
[Swift] GCD와 친해지기 멀티 쓰레딩 (Multi threading)멀티 쓰레딩은 하나의 프로세스 내에서 이루어지던 작업을 다른 쓰레드에서 작업할 수 있도록 분산 처리할 수 있는 방법입니다.동시에 여러 작업을 수행할 수 있어 빠르게 작업을 수행할 수 있지만, 수행 순서를 보장할 수 없습니다  iOS 에서 멀티 쓰레딩을 구현하는 주요 방법은 아래와 같습니다. 1) GCD : 디스패치 큐를 사용하여 작업을 스케쥴링하고 병렬로 실행할 수 있습니다.2) Operation: 오퍼레이션 큐를 사용하여 Operation 객체를 관리합니다. GCD GCD 가 무엇이며 어떤 목적으로 사용되나요? GCD (Grand Central Dispatch) 는 macOS 및 iOS 에서 다중 스레드 및 병렬 프로그래밍을 간단하게 구현할 수 있도록 해주는 .. 2024. 1. 25.
[iOS] TableViews - Static table views are only valid when embedded in UITableViewController instances 컴파일 오류 UIViewController 객체의 View 내부에 UITableView 객체를 Embed 하고 Attributes inspector 창을 통해 UITableView의 content를 static cell로 설정한 다음, 실행시켰는데 "Static table views are only valid when embedded in UITableViewController instances" 라는 오류가 발생하며 빌드에 실패했다. 원인을 찾고자 공식문서를 찾아보니... 아래와 같이 중요하다고 박스표시까지 되어있다.. UITableViewController 중요 ⚠️ 정적 데이터를 가진 테이블 뷰는 해당 데이터를 관리하기 위해 UITableViewController 객체가 필요합니다. 정적 테이블을 사용하면 스토.. 2024. 1. 7.
[Swift] 더 나은 swift를 위하여 swift-evolution 안녕하세요 🎵 Lody 입니다. Apple은 더 나은 Swift언어를 위해 개발자들이 자유롭게 새로운 기능을 제안할 수 있도록 swift-evolution 을 운영하고 있습니다 오늘은 이 swift-evolution에서 제안서를 읽다가 우연히 오타를 발견했습니다. 오타를 수정하고 호다닥 PR을 보내보았는데, 자고 일어나니 PR이 승인되어 main 브랜치에 merge 되어있더라구요.. 가장 최근 committer가 나라니.. ⭐  사실 별거 없는 오타 수정이지만 ㅎㅎ,,, 대형 오픈소스에 티끌이라도 기여를 했다는 스스로의 뿌듯함이 드네요.문서도 꼼꼼하게 읽다보니 이런 소확행도 있고,, 쏠쏠한 재미가 있네요 ㅎㅎ.. 공식문서 사랑해요 🫰  GitHub - apple/swift-evolution: This.. 2024. 1. 7.
[Swift] @available, @available(*, unavailable), #available 사용하기 안녕하세요 🎵 Lody 입니다. 오늘은 @available, @available(*, unavailable), #available 에 대해 정리해보겠습니다  @available@available 은 Swift 프로그래밍 언어에서 제공되는 기능입니다. 이 어노테이션은 Swift 언어의 일부로, Swift의 표준 라이브러리에 포함되어 있습니다. 주로 Apple의 플랫폼들, 즉 iOS, macOS, watchOS, tvOS 등에서 사용됩니다. 다양한 버전의 운영체제에서 실행되는 어플리케이션의 호환성을 관리할 때 @available 어노테이션을 활용할 수 있습니다. @available 을 통해 개발자는 특정 클래스, 메서드, 프로퍼티 등이 특정 버전의 OS에서 사용 가능한지 여부를 명시할 수 있습니다. 가령 .. 2024. 1. 3.
[iOS] 버튼 클릭시 Haptic 햅틱 적용하기 보호되어 있는 글 입니다. 2023. 11. 29.