Swift(7)
-
Objective-C의 _Nonnull, _Nullable, _Null_unspecified 완벽 정리 🚀
Objective-C를 사용하다 보면 포인터(*)가 NULL을 가질 수 있는지 여부를 명확하게 지정해야 하는 경우가 있어요.특히, Swift와 연동할 때는 더욱 중요하죠! 🧐이 문제를 해결하기 위해 Apple이 도입한 키워드가 바로 _Nonnull, _Nullable, _Null_unspecified 입니다.이번 글에서는 이 키워드들이 어떤 역할을 하는지, 언제 사용해야 하는지에 대해 알아보겠습니다. 1. _Nonnull, _Nullable, _Null_unspecified란?각 키워드는 포인터(T *)가 NULL을 가질 수 있는지 여부를 나타냅니다.키워드설명_NonnullNULL이 될 수 없음. 포인터가 절대 nil이 될 수 없음을 의미_NullableNULL이 될 수 있음. 포인터가 nil을 가질 ..
2025.01.06 -
[Swift] 자주 발생하는 iOS Swift 오류 및 해결 방법
개발자(나)가 자주 발생하는 Swift 관련 오류 해결 방법을 작성 해보겠습니다. 1. Unwrapping Optional 오류Swift는 타입 안정성을 위해 Optional 타입을 도입했습니다. 하지만 Optional 값을 강제 언래핑하려 할 때 nil이 있으면 앱이 크래시됩니다. 예를 들어, 다음과 같은 코드가 있다고 가정해봅시다. * Optional 타입이란? 변수에 값이 없을(nill) 가능성이 있을 때 사용. 일반 타입에 ?를 붙여 사용한다. nil을 가질 수 있기 때문에, 그 값을 사용할 때는 **언래핑(unwrapping)**을 통해 안전하게 값을 추출해야 한다. var testValue: String?print(testValue!)여기서 test Value가 nil이면 Fata..
2024.09.06 -
[Swift] Concurrency와 Async/Await
최근 Swift에 도입된 Concurrency(동시성)와 Async/Await 기능은 많은 개발자들의 주목을 받고 있습니다.이 기능은 비동기 코드를 더 간결하고 이해하기 쉽게 작성할 수 있도록 도와주며, 복잡한 콜백 지옥을 피할 수 있는 방법을 제공합니다.이번 글에서는 Concurrency와 Async/Await가 무엇인지, 어떻게 활용할 수 있는지에 대해 알아보겠습니다.OS 개발자들에게 비동기 작업을 더 쉽게 관리할 수 있는 방법을 제공하여 이를 통해 더 간결하고 효율적인 코드를 작성할 수 있을 것입니다.Concurrency(동시성)란?Concurrency는 여러 작업을 동시에 실행하는 프로그래밍 기법을 의미합니다.iOS 애플리케이션에서는 네트워크 요청, 데이터베이스 쿼리, 이미지 처리 등 많은 작업이..
2024.08.23 -
[swift] dispatch_async() 비동기로 실행 시키기
1. dispatch_async란 무엇인가?dispatch_async는 Grand Central Dispatch(GCD)에서 제공하는 비동기 함수로, 작업을 지정된 큐에 비동기적으로 제출합니다. * 비동기 프로그래밍: 비동기 프로그래밍은 작업이 완료될 때까지 기다리지 않고 다른 작업을 계속 진행할 수 있도록 해줍니다. 이를 통해 앱의 성능과 반응성을 개선할 수 있습니다. 2. dispatch_async를 사용하는 이유메인 스레드와 백그라운드 스레드: UI 업데이트는 메인 스레드에서 수행되어야 하며, 시간이 많이 걸리는 작업은 백그라운드 스레드에서 처리해야 합니다. dispatch_async를 사용하면 이 작업을 쉽게 관리할 수 있습니다.비동기 작업 처리: 네트워크 요청, 파일 I/O, 데이터베이..
2024.08.07 -
[XCode] 프로젝트 무한로딩 오류
맥북을 강제로 재부팅 할 때 XCode 프로젝트가 무한 로딩이 걸릴 때가 있는데, 이럴 경우 여러가지 방법을 사용한다. 첫번째 방법. xcuserdata 디렉토리 삭제 1. 무한로딩 프로젝트 디렉토리로 이동 2. 해당프로젝트.xcodeproj 또는 해당프로젝트.xcworksapce 마우스 오른쪽 버튼 클릭 - 패키지 내용 보기 3. xcuserdata 디렉토리 삭제 두번째 방법. DerivedData 삭제 XCode 캐시 파일 삭제하기 1. 터미널을 연다. 2. rm -rf ~/Library/Developer/Xcode/DerivedData 터미널에서 아래 명령어로DerivedData 폴더를 삭제 세번째 방법. XCode 설정 초기화 하기 1.터미널을 연다 2. defaults delete com.a..
2024.04.16 -
[Swift] print() dump() 함수 차이점
스위프트 표준 라이브러리에는 콘솔 로그는 남기는 용도로 print() 함수를 자주 사용하지만, dump() 함수도 사용 할 수 있다. print() 함수는 간략한 정보를 출력하지만 dump() 함수는 조금 더 자세한 정보를 출력 한다. print() 함수의 원형 public func print(_ items: Any..., separator: String = " ", terminator: String = "\n") dump() 함수의 원형 public func dump(_ value: T, name: String? = nil, indent: Int = 0, maxDepth: Int = .max, maxItems: Int = .max) -> T 실제 PlayGround에서 입력 시 오른쪽과 같이 다른 결과..
2024.04.01