반응형

전체 글 53

[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

[Flutter] 날짜 문자열을 원하는 포맷으로 바꾸기 DateFormat & 숫자 3자리마다 콤마 넣기 NumberFormat

Flutter에서 DateFormat 클래스를 사용하려면 intl 패키지를 설치해줘야 한다. https://pub.dev/packages/intl intl | Dart package Contains code to deal with internationalized/localized messages, date and number formatting and parsing, bi-directional text, and other internationalization issues. pub.dev DateFormat 이외에도 NumberFormat, BidiFormatter 클래스도 여기에 들어있다. pubspec.yaml dependencies: intl: ^0.19.0 최신 버전으로 추가해 준다. DateFor..

DEV/Flutter 2024.02.26

[프로그래머스 Lv.0 / Swift] Lv.0 풀이_모음.zip

A로 B 만들기 func solution(_ before:String, _ after:String) -> Int { return String(before.sorted()) == String(after.sorted()) ? 1 : 0 } 가까운 수 func solution(_ array:[Int], _ n:Int) -> Int { let sortedArray = array.sorted() // 가까운 수가 여러 개일 경우 더 작은 수를 담기 위해 정렬 var resultNum = sortedArray[0] var tempNum = abs(sortedArray[0] - n) for i in sortedArray { if abs(i - n) < tempNum { resultNum = i tempNum = ab..

[프로그래머스 Lv.0 / Swift] 유한소수 판별하기 With 최대공약수 & 최소공배수

이 문제는 최대공약수를 구하면 쉽게 풀리는 문제다. 최대공약수와 최소공배수는 알고리즘 문제에서 자주 나오는 소재 중 하나여서 한 번 제대로 알아보자! 먼저 유클리드 호제법(유클리드 알고리즘)에 따르면 2개의 자연수 a, b(a > b)에 대해서 a를 b로 나눈 나머지를 r이라 하면 a와 b의 최대공약수는 b와 r의 최대공약수와 같아진다. 그리고 다시 b를 r로 나눈 나머지 r'가 생성되고, r을 r'로 나눈 나머지 r''가 나오고... 쭉 반복해서 최종적으로 나머지 0이 나왔을 때의 나누는 수가 a와 b의 최대공약수가 된다. 글로만 보면 뭔 말인지 어렵다. https://www.youtube.com/watch?v=Obs-HC5j5bI 이 영상보면 이해가 팍 된다. gcd(A, B) -> A % B 결과 ..

[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,..

반응형