전체 글 24

[iOS] 복습 15 - 클로저(closure)

더보기클로저(Closure)를 지원하는 프로그래밍 언어는 상당히 많으며, 대부분의 현대 프로그래밍 언어에서 클로저를 사용할 수 있습니다. 클로저는 변수의 스코프와 수명을 관리하는 강력한 기능으로, 함수형 프로그래밍뿐만 아니라 객체지향 및 절차적 프로그래밍에서도 유용하게 사용됩니다. 클로저를 지원하는 주요 언어들 1. JavaScript• 익명 함수와 function 또는 화살표 함수 (=>)를 사용하여 클로저를 구현할 수 있습니다.2. Python• 함수 안에 정의된 내부 함수가 외부 함수의 변수를 캡처하여 클로저를 생성합니다.3. Ruby• proc, lambda, 블록을 사용하여 클로저를 생성합니다.4. Swift• 클로저는 중괄호 {}로 표현되며 함수처럼 사용할 수 있습니다.5. Java• Java..

[iOS] 복습 14 - BMI 앱 구현(4/4)

Autolayout이란? iOS의 Autolayout은 다양한 화면 크기와 방향에서 UI 요소를 동적으로 배치하고 크기를 조정할 수 있도록 도와주는 레이아웃 시스템입니다. 이 시스템은 뷰 간의 제약 조건(Constraints) 을 정의하여 뷰의 위치와 크기를 결정합니다. 주요 특징:  • 다양한 디바이스 크기와 해상도에서 일관된 UI 제공 • 회전 및 다국어 지원을 위한 유연성 • 뷰의 동적 크기 조정 가능 (예: 텍스트 길이에 따른 Label의 크기 변경) Autolayout에서 가장 많이 사용하는 제약 조건(Constraints)의 우선순위 Autolayout에서 자주 사용하는 제약 조건을 순서대로 정리하면:  1. Edges (뷰의 가장자리 제약) • 부모 뷰나 다른 뷰와의 상하좌우 간격을 설정. ..

[Swift] 문법 정리 - 오류 처리(Error Handling), Generic<>

https://youtu.be/R8OWOgCNt4M?si=bldau6gYEZ3seGj2위 영상을 보고 정리한 글입니다. (39:30 ~ 42:31)    # throwing function 매개변수 괄호 다음에 throws라는 키워드가 있는 함수는 그냥 사용할 수 없고 error handling을 해야 함 func can() throws error handling을 해야하는 함수func canThrowErrors() throws -> String error handling 할 수 없는 함수func cannotThrowErrors() -> String관리메뉴열기# 오류 발생 가능 함수의 호출 방식 : do~try~catchdo { audioPlayer = try AVAudioPlayer(content..

[iOS] 복습 13 - BMI 앱 구현(3/4)

identity inspector Video Scene 스토리보드와 VideoViewController클래스 연결할 때 사용  videoPath는 optional String형 같은 이름의 player을 구분하기 위해 변수 player은 player1으로 표시  present 함수 사용import UIKitimport AVKitclass VideoViewController: UIViewController { @IBAction func playVideo(_ sender: UIButton) { let videoPath = Bundle.main.path(forResource: "APT", ofType: "mp4") else let videoURL = URL(filePath..

[Swift] 문법 정리 - 옵셔널 체이닝(Optional Chaining)

https://youtu.be/R8OWOgCNt4M?si=bldau6gYEZ3seGj2위 영상을 보고 정리한 글입니다. (37:05 ~ 39:30)    print(_:seperator:terminator:)print("일 이 삼")print("1 2 3")print(1, 2, 3)print(1.0, 2.0, 3.0)print(1, 2, 3, separator: "...")for n in 1...3 { print(n)}for n in 1...3 { print(n, terminator: " ")}출력값일 이 삼1 2 31 2 31.0 2.0 3.01...2...312 3 1 2 3 forced unwrappingvar x : Intx = 10if x != nil { print(x!)}els..

[Swift] 문법 정리 - 클래스(class) vs 구조체(struct) vs 열거형(enum)

https://youtu.be/R8OWOgCNt4M?si=bldau6gYEZ3seGj2위 영상을 보고 정리한 글입니다. (35:40 ~ 37:02)   # 구조체구조체/enum의 인스턴스는 값 타입, 클래스의 인스턴스는 참조 타입구조체는 상속 불가struct Resolution { // 구조체 정의 var width = 1024 // 프로퍼티 var height = 76}let myComputer = Resolution() // 인스턴스 생성print(myComputer.width) // 프로퍼티 접근  구조체 : Memberwise Initializerstruct Resolution { // 구조체 정의 var width : Int // 프로퍼티 var height : Int}le..

[iOS] 복습 12 - BMI 앱 구현(2/4)

iOS에서 **오토 레이아웃(Auto Layout)**은 앱의 사용자 인터페이스(UI)를 화면 크기, 방향, 기기 종류에 따라 자동으로 적응하도록 설계하는 레이아웃 시스템이야. 오토 레이아웃의 주요 역할 1. 화면 크기와 비율에 따른 적응• 아이폰 SE부터 아이패드까지 다양한 화면 크기를 가진 기기에서 UI가 깔끔하게 표시되도록 도와줘.2. 가로/세로 방향 지원• 디바이스를 회전해도 UI가 자연스럽게 재배치되도록 설정 가능.3. 다국어 지원• 언어에 따라 텍스트 길이가 달라져도 적절히 배치되도록 자동 조정. 오토 레이아웃의 핵심 요소 1. 제약 조건(Constraints)• 뷰들의 위치와 크기를 정의하는 규칙이야. 예를 들어:• “이 버튼은 화면의 가운데에 위치한다.”• “이 텍스트 필드의 높이는 50으..

[Swift] 문법 정리 - 열거형(enum)

https://youtu.be/R8OWOgCNt4M?si=bldau6gYEZ3seGj2위 영상을 보고 정리한 글입니다. (34:04 ~ 35:40)  # 열거형(enum) 관련있는 데이터들이 멤버로 구성되어 있는 자료형원치 않는 값이 잘못 입력되는 것 방지입력 받을 값이 한정되어 있을 때특정 값 중 하나만 선택하게 할 때예색깔 : 빨강, 녹색, 파랑 / 성별 : 남, 여 열거형 정의enum 열거형명{ 열거형 정의}enum Planet { case Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune} // 하나의 case문에 멤버들 나열하는 것도 가능enum Compass { case North case South case East ca..

[Swift] 문법 정리 - extension, Swift 접근 제어(access control), 프로토콜(protocol)

https://youtu.be/R8OWOgCNt4M?si=bldau6gYEZ3seGj2위 영상을 보고 정리한 글입니다. (29:14 ~ 34:03) # 익스텐션 스위프트 클래스, 구조체, 열거형, protocol에 새로운 기능을 추가익스텐션은 하위 클래스를 생성하거나 참조하지 않고 기존 클래스에 메서드, 생성자(initailizer), 계산 프로퍼티 등의 기능을 추가하기 위하여 사용스위프트 언어의 built-in 클래스와 iOS 프레임워크에 내장된 클래스에 기능을 추가할 때 익스텐션을 이용하면 매우 효과적임클래스(구조체, 열거형, protocol)는 다음과 같은 형태로 확장(익스텐션)됨extension 기존타입이름 { // 새로운 기능}표준 자료형 Double 구조체에 두 배의 값을 반환하는 프로퍼..

[iOS] 복습 11 - BMI 앱 구현(1/4)

9장 Page Controller 10장 Tab Bar Controller화면 하단에 탭 바를 표시하여 여러 화면 간에 쉽게 이동할 수 있도록 해주는 컨트롤러주로 다중 화면 구조를 가진 앱에서 사용되며, 각각의 탭은 별도의 화면(View Controller)을 표시합니다.   11장  Navigation Controller12장 Table View Controlleroverride func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) ..