전체 글 150

헷갈리기 쉬운 델리게이트 패턴으로 컬렉션 셀의 데이터 전달하기

언제 델리게이트 패턴을 고려해야 하는지:델리게이트 패턴이 필요한 경우는 아래와 같습니다:셀 내부의 특정 UI 요소와 상호작용할 때:예를 들어, 셀 안에 버튼이 있어서 사용자가 버튼을 눌렀을 때 특정 작업을 해야 하는 경우에는 델리게이트 패턴이 유용합니다. didSelectItemAt은 셀 전체의 선택을 처리하지만, 버튼과 같은 특정 UI 요소와의 상호작용은 다루지 않습니다.⭐️ 셀 자체를 눌렀을 때 반응한다면 => didSelectItemAt 이걸 사용하지만, ⭐️ 셀 안에 있는 버튼을 눌렀을 때 반응한다면 => 델리게이트 패턴을 사용해야 한다.   컬렉션 셀 안에 텍스트로 가득 채운 상태에서 해당 셀을 눌렀을 경우, 텍스트의 색상 변경 및 외부 API를 통한 데이터를 받는다? => 이거라면 didSel..

iOS/Swift 2024.08.28

콜백 함수는 언제 쓰이나요?

콜백 함수는 주로 비동기 작업을 처리할 때 사용됩니다. 비동기 작업은 실행되는데 시간이 걸리거나, 언제 완료될지 알 수 없는 작업들을 의미해요. 예를 들어, 네트워크 요청, 파일 읽기/쓰기, 타이머, 애니메이션 등이 이에 해당합니다. 이러한 작업들이 완료된 후 특정 작업을 수행해야 할 때, 콜백 함수를 사용해 그 작업이 완료된 후의 행동을 정의할 수 있어요.  콜백 함수가 주로 쓰이는 상황 네트워크 요청서버에서 데이터를 가져오거나, 데이터를 서버에 보낼 때, 네트워크 요청은 시간이 걸리기 때문에 요청이 완료된 후에 데이터를 처리하는 콜백 함수를 사용합니다.func fetchDataFromServer(completion: @escaping (Data?) -> Void) { // 비동기 네트워크 요청 ..

iOS/Swift 2024.08.23

iOS에서 델리게이트 패턴(Delegate Pattern)은 어떤 목적으로 사용되나요?

1. 델리게이트 패턴(Delegate Pattern)의 목적 델리게이트 패턴은 어떤 객체의 행동을 다른 객체에 위임하기 위해 사용되는 패턴이에요. iOS에서 자주 사용되며, 특정 객체가 해야 할 일을 다른 객체가 대신 처리하도록 할 수 있어요. 이를 통해 코드의 재사용성을 높이고, 객체 간의 결합도를 낮출 수 있죠. 예시: 예를 들어, Car라는 클래스가 있다고 해볼게요. 이 클래스는 엔진을 켤 수 있어요. 그런데 엔진이 켜질 때마다 누군가에게 이 사실을 알리고 싶다면, 그 알림 로직을 Car 클래스 안에 다 넣지 않고, 다른 객체에게 그 일을 맡길 수 있어요. 여기서 델리게이트 패턴을 사용하면 이런 식으로 구현할 수 있어요 protocol CarDelegate { func engineDidStar..

iOS/Swift 2024.08.23

Swift에서 Any와 AnyObject의 차이점은 무엇인가요?

1. AnyAny는 모든 타입을 담을 수 있는 타입이에요. 즉, 클래스(참조 타입), 구조체(값 타입), 열거형, 기본 데이터 타입(Int, String, Bool 등) 등 Swift의 모든 데이터 타입을 가리킬 수 있어요. 예를 들어, 다음과 같이 여러 가지 타입을 담을 수 있어요var anything: Anyanything = 42 // Intanything = "Hello" // Stringanything = true // Boolanything = 3.14 // Double  ⭐️ Any를 사용하면 어떤 종류의 값이든 담을 수 있으니까, 매우 유연하게 쓸 수 있죠.  2. AnyObjectAnyObject는 조금 다릅니다. 클래스 타입의 객체..

iOS/Swift 2024.08.23

Swift에서 클로저(Closure)란 무엇이며, 어떻게 사용하나요?

Swift에서 클로저(Closure)란 무엇이며, 어떻게 사용하나요?**클로저(Closure)**는 코드에서 일급 객체로 취급되는 함수의 일종입니다. 함수와 유사하게 코드 블록을 캡처하고 전달할 수 있지만, 이름이 없고 주변의 변수와 상수를 캡처할 수 있다는 점에서 함수와 구분됩니다. 클로저는 보통 함수나 메서드의 인수로 전달되어, 나중에 실행될 코드 블록을 정의하는 데 사용됩니다. 클로저의 기본 형태는 다음과 같습니다{ (parameters) -> returnType in // 클로저 바디}  예를 들어, 정수를 두 개 받아 그 합을 반환하는 클로저는 다음과 같이 작성할 수 있습니다let sumClosure: (Int, Int) -> Int = { (a, b) in return a + b}l..

iOS/Swift 2024.08.21

Auto Layout을 사용하는 이유와 장점은 무엇인가요?

Auto Layout을 사용하는 이유와 장점 Auto Layout은 iOS 및 macOS 애플리케이션에서 다양한 화면 크기와 방향에 따라 사용자 인터페이스(UI)가 적절하게 배치되도록 하는 레이아웃 시스템입니다. Auto Layout을 사용하는 이유와 그 장점은 다음과 같습니다:다양한 화면 크기와 장치 지원:iOS 장치는 다양한 화면 크기와 해상도를 가지므로, 동일한 레이아웃을 여러 화면에서 동일하게 유지하기가 어렵습니다. Auto Layout은 이러한 문제를 해결해 줍니다.동적 컨텐츠 지원:UI가 동적으로 변경되는 경우(예: 텍스트 길이가 가변적인 경우), Auto Layout을 사용하면 이러한 변화에 유연하게 대응할 수 있습니다.코드와 UI의 분리:Auto Layout은 인터페이스 빌더(Interfa..

iOS/UIKIT 2024.08.21

Storyboard와 XIB의 차이점은 무엇인가요?

iOS 앱 개발에서 Storyboard와 XIB는 UI를 설계하는 데 사용하는 두 가지 주요 도구입니다. 이들의 차이점과 각각의 기능 및 장점을 이해하면 더 효율적으로 앱을 개발할 수 있습니다. Storyboard와 XIB의 차이점 UI 설계 방식:XIB: XIB 파일은 개별적인 UI 컴포넌트를 설계하는 데 사용됩니다. 하나의 XIB 파일에는 보통 하나의 View나 View Controller의 레이아웃이 들어갑니다. 즉, XIB 파일은 독립적인 UI 요소를 설계하는 데 적합합니다.Storyboard: Storyboard는 여러 View Controller와 그 사이의 관계를 한 곳에서 시각적으로 설계할 수 있게 해줍니다. 하나의 Storyboard에서 앱의 전체적인 흐름을 정의할 수 있으며, 화면 간 ..

iOS/Swift 2024.08.21

테이블 셀을 눌렀을 때 상세페이지로 데이터 전달하기

테이블 셀을 누르면 해당 여행지 정보를 상세 페이지로 전달하고, 이미지와 제목으로 보여줄 수 있도록 했습니다.  왼쪽 이미지에서 보이는 것은 키워드 검색 조회로 홈 화면에 보이는 테이블에 데이터를 전달할 때 사용되는 API 요청 변수 입니다. 오른쪽 이미지는 소개 정보 조회로 여행지에 대한 상세 정보를 알려주는 API 요청 변수 입니다.   이번에 제가 구현해볼 내용은 다음과 같습니다. 테이블을 누르면 해당 셀에 대한 정보 중에 contentid와 contenttyepid를 DetailViewController로 전달합니다. 그럼 DetailViewController에서는 전달 받은 contentid와 contenttypeid를 통해 소개 정보 조회 API의 파라미터로 사용합니다. 소개 정보 조회 API..

iOS/UIKIT 2024.08.21