본문 바로가기

반응형

Mobile

(50)
[iOS] defer 블록 defer 블록은 함수나 메소드에서 코드의 흐름과 상관없이 가장 마지막에 실행되는 블록입니다. 지연블록이라고 부르기도 하는데, 이 블록에 작성된 구문은 항상 함수의 종료 직전에 실행되기 때문에 종료 시점에 맞추어 처리해야 할 구문이 있다면 우리는 어디에 작성해야 할지 고민하지 않고 defer 블록에 넣어두기만 하면 됩니다. 특징 defer 블록은 작성된 위치와 순서에 상관없이 함수가 종료되기 직전에 실행된다. defer 블록을 읽기 전에 함수의 실행이 종료될 경우 defer 블록은 실행되지 않는다. 하나의 함수나 메소드 내에서 defer 블록을 여러 번 사용할 수 있다. 이때에는 가장 마지막에 작성된 defer 블록부터 역순으로 실행된다. defer 블록을 중첩해서 사용할 수 있다. 이때에는 바깥쪽 de..
[코딩테스트 입문] Swift - Day 7 1. 2차원으로 만들기 Q. 정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요. num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다. func solution(_ numList:[Int], _ n:Int) -> [[Int]] { (0...(numList.count/n)-1).map { Array(numList[(n * $0)...((n - 1)+(n * $0))]) } } 2. 공던지기..
[iOS] 접근 제한자 간단 정리 접근 제한자 객체의 접근 범위를 명시적으로 정의하기 위해 제공된다. 이 접근 제한자들은 클래스나 메소드, 프로퍼티 앞에 작성되어 개별 객체와 속성에 대한 접근을 단계별로 허용하거나 차단하는 기능을 수행한다. 1. private 이 접근 제한자로 선언된 클래스와 메소드, 프로퍼티는 같은 클래스 내에서만 접근이 가능합니다. 2. fileprivate (3.0 버전부터 추가) 이 접근 제한자로 선언된 클래스와 메소드, 프로퍼티는 같은 파일 내에서 접근이 가능합니다. 3. internal 이 접근 제한자로 선언된 클래스와 메소드, 프로퍼티는 같은 모듈 또는 프로젝트 내에서 접근이 가능합니다. 접근 제한자를 선언하지 않고 클래스나 메소드, 프로퍼티를 정의하면 컴파일러는 기본적으로 internal 범위를 적용합니다..
[iOS] Xcode 14, iOS 15 에서 Navigation Bar Color 설정 방법 Xcode 14, iOS 15 에서 NavigationBar Color 설정 방법에 대해서 ... ISSUE "꼼꼼한 재은 씨의 스위프트 실전편" 을 학습 중에 Navigation Bar 를 커스텀하는 과정에서 문제가 있었습니다. 바로 책에서 제안하는 방법으로는 iPhone 14 Pro 시뮬레이터에서는 내비게이션 바의 색상이 변경되지 않는 문제가 있었습니다. 책에서 제안하는 방법대로 아래와 같이 내비게이션 바를 설정했었습니다. (꼼꼼한 재은 씨의 스위프트 실전편: 368p) import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.initTitle() } func in..
[iOS] 강한 참조와 약한 참조 강한 참조와 약한 참조 아웃렛 변수는 스토리보드에 정의된 객체를 커스텀 클래스에서 참조할 수 있도록 연결된 변수입니다. 이는 스토리보드의 객체와 직접적으로 연결되기 때문에, 해당 객체의 속성을 커스텀 클래스에서 직접 호출할 수 있습니다. 오늘은 이 아웃렛 변수를 선언할 때, 설정창 하단에 있는 [Storage] 영역의 옵션에 대해 알아보도록 하겠습니다. [Storage] 영역의 옵션은 "Strong"과 "Weak"이 있습니다. 기본 값은 "Weak" 옵션입니다. 해당 옵션은 iOS 시스템(ARC)에서 변수의 메모리 관리와 관련이 있습니다. "Strong" 타입은 강한 참조, "Weak" 타입은 약한 참조라고 부릅니다. ARC(Auto Reference Counter): '특정 변수를 몇 군데에서 사용하고..
[코딩테스트 입문] Swift - Day 6 1. 직각삼각형 출력하기 Q. "*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요. import Foundation let n = readLine()!.components(separatedBy: [" "]).map { Int($0)! } (1...n[0]).forEach { print(String(repeating:"*", count:$0))} 2. 외계행성의 나이 Q. 우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있..
[코딩테스트 입문] Swift - Day 5 1. 피자 나눠 먹기 (2) Q. 머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요. func solution(_ n:Int) -> Int { var remainder: Int = 1 while 6 * remainder % n != 0 { remainder += 1 } return remainder } 2. 피자 나눠 먹기 (3) Q. 머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주..
[iOS] 이전 화면으로 값을 전달하는 방법 Description 동기방식으로 이전 화면으로 값을 전달하는 방법에 대해 설명하고자 합니다. (iOS 13 이후 버전에서는 Present Modally 방식에서 full screen이 아닌 경우 실행되지 않는다고 합니다. 해당 이슈에 대해서는 아래에서 서술하도록 하겠습니다.) 동기방식은 저장소를 이용하지 않고 직접 값을 이전 화면으로 전달하는 것이라고 할 수 있습니다. 두 번째 View Controller에서 첫 번째 View Controller로 값을 직접 전달하는 방법입니다. 우선 프로젝트를 생성한 후에 첫 번째 ViewController 와 두 번째 View Controller 인 FormViewController를 아래 그림과 같이 만들어 줍니다. 첫 번째 ViewController에는 Labe..
[코딩테스트 입문] Swift - Day 4 Q. 머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 나이 age가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요. func solution(_ age:Int) -> Int { 2022 - age + 1 } Q. 각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요. 예각 : 0 < angle < 90 직각 : angle = 90 둔각 : 90 < angle < 180 평각 : angle = 180 func soluti..
[코딩테스트 입문] Swift - Day 3 Q. 정수 num1, num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요. func solution(_ num1:Int, _ num2:Int) -> Int { num1 % num2 } Q. 중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요. array의 길이는 홀수입니다. 0 Int in return array.filter {$0 == number}.count } // countOfMaxValue는 동일한 개수가 담긴..

반응형