반응형

DEV - iOS 26

[SwiftUI] 설정화면 Form으로 만들어보기

앱의 초기 설정 화면을 Form을 사용해서 화면을 그려보았다.Form은 섹션을 나누어 그룹화된 목록들을 보여줄 때 유용하게 쓰일 수 있다.import SwiftUIstruct FirstSettingView: View { // 문장 수 설정 변수 @State private var sentence = 10 let sentences = [10, 20, 30] // 알림 토글 @State private var isOn = false // 알림 시간 설정 @State private var notificationTime = Date() var body: some View { NavigationView { Form { ..

DEV - iOS/iOS 2024.05.23

[iOS Interview Questions] ARC란 무엇인지 설명하시오.

Swift는 앱의 메모리 사용을 추적하고 관리하기 위해 ARC(자동 참조 카운팅, Automatic Reference Counting)을 사용합니다. 대부분의 경우에서는 메모리 관리가 알아서 작동되기 때문에 개발자가 메모리 관리에 대해서 생각할 필요는 없습니다. ARC는 클래스의 인스턴스가 더 이상 필요하지 않을 때 해당 인스턴스가 사용한 메모리를 자동으로 해제합니다. ➡️ 참조 카운팅이기 때문에 클래스 인스턴스에만 적용됩니다. 값 타입인 구조체와 열거형은 적용되지 않습니다! Swift에서 새로운 클래스 인스턴스를 생성할 때마다 ARC는 해당 인스턴스에 대한 정보를 저장하기 위해 메모리를 할당하고, 인스턴스가 더 이상 필요하지 않은 경우 ARC는 해당 인스턴스에 사용된 메모리를 해제하여 메모리 공간을 차..

[iOS Interview Questions] UIView 에서 Layer 객체는 무엇이고 어떤 역할을 담당하는지 설명하시오.

UIView의 Layer 프로퍼티는 CALayer(Core Animation 프레임워크에서 제공하는 객체) 타입 객체이며 뷰의 그래픽 처리 및 애니메이션 처리를 합니다. Layer 속성은 항상 CALayer 또는 CALayer 서브 클래스 객체를 반환하기 때문에 nil이 될 수 없습니다. 이때 객체의 실제 클래스는 UIView의 layerClass 클래스 메서드에서 반환되는 값에 따라 결정이 됩니다. 그리고 UIView가 Layer의 delegate 역할을 합니다. UIView는 레이아웃 및 터치 이벤트와 같은 여러 작업들을 수행하지만 직접적으로 화면을 그리거나 애니메이션을 제어하지는 않습니다. UIView는 CALayer 위에 있는 wrapper라고 보면 됩니다. 각각의 UIView에는 하나의 루트 C..

[iOS Interview Questions] 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체를 무엇이라고 하는가?

An object that manages a view hierarchy for your UIKit app. 애플 공식 문서에서 UIViewController를 UIKit 앱에서 뷰 계층을 관리하는 객체라고 설명합니다. 따라서 이 질문의 정답이 되겠습니다! UIViewController 클래스는 모든 뷰 컨트롤러에 공통적으로 공유되는 동작들을 정의합니다. 일반적으로 UIViewController 클래스의 인스턴스를 직접 만들지 않고, UIViewController를 상속해서 뷰 계층을 관리하는데에 필요한 메서드와 프로퍼티를 추가해야 합니다. ViwController의 주요 동작으로는, 일반적으로 데이터의 변화로 인한 화면 컨텐츠 업데이트 앱의 화면과 사용자 간의 상호작용 뷰 크기 조정과 전체 인터페이스의 ..

[iOS Interview Questions] Result 타입에 대해 설명하시오.

@frozen enum Result where Failure : Error Result 타입은 경우에 따른 관련된 값을 포함하여 성공 또는 실패를 나타내는 값이라고 설명하고, enum으로 작성되어 있습니다. 앱 실행 중에 에러가 발생하면 프로그램은 강제로 종료가 됩니다. 컴파일 에러는 문법과 관련 있기 때문에 앱 실행 전에 에러가 발생하고, 런타임 에러는 앱 실행 중에 발생한 에러로 강제 종료 상황이 올 수 있습니다. 하지만 발생 가능한 에러에 대한 처리를 해주면 강제 종료 없이 앱을 계속 실행시킬 수 있어서 개발자는 에러 처리를 위하 코드를 작성해야 합니다. Swift 1.x 최초 버전에서는 Objective-C와 동일한 방법으로 오류 처리를 했습니다. NSError 포인터를 사용했기 때문에 포인터 사..

[iOS Interview Questions] KVO 동작 방식에 대해 설명하시오.

KVO는 Key-Value Observing으로 특정 키 값의 변화를 감지하고 알려주는 코코아 프로그래밍 패턴입니다. 이 기능은 모델과 뷰처럼 앱의 논리적으로 분리되어 있는 사이 간 변경 사항을 전달하는데 유용하게 쓰입니다. (모델과 뷰가 서로 독립적으로 작동되는 건 MVC 패턴 등 디자인 패턴에서 알 수 있음!) 이 기능은 NSObject에서 상속받은 클래스에서만 키 값을 관찰할 수 있기 때문에 Swift에서 사용하려면 @objc 어노테이션을 붙여서 사용해야 합니다. class MyObjectToObserve: NSObject { @objc dynamic var myDate = NSDate(timeIntervalSince1970: 0) // 1970 func updateDate() { myDate = ..

[iOS Interview Questions] Codable에 대하여 설명하시오.

앱을 만들 때 서버와 통신을 해서 데이터를 주고 받는 경우가 많은데 특히 요즘에는 JSON 형식으로 된 데이터를 주고 받는 경우가 흔합니다. 애플 공식 문서에서 Codable은 “A type that can convert itself into and out of an external representation.” 자신을 변환하거나 외부 표현으로 변환하는 타입이라고 말하는데, 여기서 외부 표현이란 JSON 형식과 같은 데이터 포맷을 말하고, 변환이라는 것은 Encode하거나 Decode하는 것으로 이해하면 됩니다. typealias Codable = Decodable & Encodable Codable은 Decodable과 Encodable이라는 두 프로토콜을 합쳐놓은 형태이므로 class, struct,..

[iOS Interview Questions] Class의 성능을 향상 시킬수 있는 방법들을 나열해보시오.

결론부터 말하면 class에 final 혹은 private 키워드를 붙여서 성능을 향상할 수 있습니다. 접근 제어 위에서 말한 키워드는 Access Control 즉, 접근 제어를 하기 위해 쓰이는 키워드인데요, 다른 소스파일이나 코드에서 어떠한 코드의 전체나 일부에 대한 접근을 제한합니다. 접근을 제한한다는 말은 A 클래스에 선언되어 있는 함수나 변수들 B 클래스에서 사용하게 하거나 못 하게 제어하는 것입니다. 클래스나 구조체, 열거형 자체를 접근 제어하거나 이 안에 선언되어 있는 함수, 변수 등등에 대해서 모두 접근 제어가 가능합니다. 선언 시 앞에 키워드를 붙여서 사용하면 됩니다. public class TestClass { final let testStr: String = "test" privat..

[iOS Interview Questions] Singleton 패턴을 활용하는 경우를 예를 들어 설명하시오.

디자인 패턴이란? 코드를 작성하는 데에 쓰이는 설계 방식, 틀, 구조들이라고 생각하면 될 것 같습니다. 유명한 MVC나 MVVM 같은 디자인 패턴들은 전체적인 코드들을 다루는 큰 틀이라 할 수 있고, 싱글톤 패턴은 이보다는 조금 작은 범위에서 적용하는 디자인 패턴입니다. Singleton 패턴이란? 앱이 시작될 때 어떤 클래스가 최초 한 번 메모리에 할당되고, 1개의 인스턴스만 생성되어 사용하는 패턴입니다. 이 클래스는 다른 곳에서 사용할 때 새로운 인스턴스를 생성해서 새로운 메모리 공간에 할당되는 것이 아닌, 원래 처음 생성했을 때 만들어진 메모리 공간에 다시 참조하게 됩니다. 따라서 하나의 인스턴스만 메모리에 등록됐기 때문에 어느 곳에서든지 이 클래스를 사용할 때 값을 계속해서 공유할 수 있게 됩니다..

[Swift / JAVA] iOS 프로젝트 Google Login 서버 만들기

https://im-babycoder.tistory.com/entry/Swift-iOS-프로젝트-Google-Login-구현하기 [Swift] iOS 프로젝트 Google Login 구현하기 친구들과 같이 진행하는 프로젝트에 Google Login 기능을 넣기로 했다. https://developers.google.com/identity/sign-in/ios/start-integrating iOS 및 macOS용 Google 로그인 시작하기 | Authentication | Google Developers 이 페이지 im-babycoder.tistory.com 이 글에 이어서 SpringBoot 서버를 만들어봤다. https://developers.google.com/identity/sign-in/ios..

DEV - iOS/iOS 2022.11.01
반응형