일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- react
- global soop
- 애플 디벨로퍼 아카데미
- 앱 비교 프로젝트
- StateObject
- Swift 문법
- apple developer academy 후기
- swift문법
- sqoop
- Apple Developer Academy @ POSTECH
- ObservedObject
- 애플 아카데미 후기
- OS
- 애플 디벨로퍼 아카데미 21주차 회고
- 데이터베이스
- Swift 기능
- 치지직
- 제앱소
- SWIFT
- 데이터베이스 공부
- iOS 개발 오류
- useReducer
- 애플 디벨로퍼 아카데미 후기
- 소프트웨어분석및설계
- Swift 디자인패턴
- 네이버 치지직
- ObservableObject
- 운영체제
- 네이버 부스트캠프
- 숭실대
- Today
- Total
목록제라스의 iOS 공부 (55)
사과하는 제라스
delegate... delegate는 위임자라는 뜻이다. 어떤 것에 대한 대리자, 즉, 수행할 사람이란 거다. 밑에 코드를 한번 보자. import UIKit // 대리자에 대한 프로토콜 protocol RemoteControlDelegate { func channelUp() func channelDown() } // 리모콘 클래스(유저와 직접 대면함) class RemoteControl { var delegate: RemoteControlDelegate? //사실상 여기에는 내가 이 리모콘으로 무엇을 작동할지 적는 것임. func doSomething() { print("리모콘의 조작이 일어나고 있음") } func channelUp() { // 어떤 기기가 리모콘에 의해 작동되는지 몰라도 됨 del..
React Native에서는 TouchableWithoutFeedback란게 있다. TextInput을 감싸주면 TextInput 외부를 클릭 시의 동작에 대한 설정이 가능했다. 이곳에 Keyboard.dismiss 함수를 적어두면 키보드가 내려가도록 할 수 있다. 그렇다면 Swift에서는 이것을 어떻게 구현할까? override func touchesBegan(_ touches: Set, with event: UIEvent?) { self.view.endEditing(true) } 이렇게 구현하면 된다. 이러면 endEditing으로 self(ViewController)의 view 내에서의 편집이 끝나도록(endEditing(true)) 하기 때문에 가능한 거다. 공식문서를 통해 확인하면 touches..
TextField를 구현하려고 하다보면 delegate 패턴을 많이 쓰게 된다. 이때, UITextFieldDelegate 프로토콜을 채택해서 사용하게 되고, 이 프로토콜은 여러 함수들을 구현할 수 있게 되어 있다. 이 여러 함수들의 기능을 살펴보자. //TextField의 편집을 시작할 수 있게 할지 말지 결정하는 함수 func textFieldShouldBeginEditing(UITextField) -> Bool //TextField의 편집이 시작되고 나서 실행되는 함수(즉, 커서가 깜빡이는 순간 실행됨) func textFieldDidBeginEditing(UITextField) //TextField의 편집을 중지할 수 있게 할지 말지 결정하는 함수 func textFieldShouldEndEdit..
Timer를 써보면 schedule을 할당해주는 방법이 여러가지가 존재한다. 그 중 2가지를 소개하고자 한다. 구현을 하다보면 정해진 간격의 시간마다, 정해진 시간동안 어떤 일을 수행하는 동작을 구현해야 할 때가 생긴다. 이러한 것을 돕는 것이 바로 timer다. 이전에 부스트캠프를 하면서도 사용했던 것인데 이번 공부를 하면서 가볍게라도 정리를 해보자! 1. 클로져 함수 @IBAction func startButtonDidTapped(_ sender: UIButton) { self.timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [self] _ in if number > 0 { number -= 1 self.slider.setValu..
오랜만에 다시 앨런 강의를 듣기 시작했다. 그런데 이전에 진행하던 앱을 실행해서 버튼을 클릭하니 이런 에러가 떴다. 왜일까...? 일단 내용에서 알 수 있다시피 ButtonTapped 함수를 실행하는 과정에서 발생한 내용같았다. 그래서 확인을 해보니 해당 버튼에서 연결한 함수가 없다는 것이었다. 예전에 버튼을 긁어서 IBAction 함수를 만들어두었었는데 그걸 지우고 다시 함수를 만들었어서 생긴 문제였다. 즉, 연결해서 만든 IBAction 함수가 있다면 그걸 그대로 사용해야하고 동일한 명명의 함수를 새로 만들면 이전 IBAction 함수와의 연결을 지우고 새로 만든 함수를 연결해야 한다는 것이다. 참고: https://worldseawater.tistory.com/101
Set 타입은 중복된 값이 없다는 점이 참으로 중요한 특징이다. 그렇다면 이것을 활용해서 자료구조를 다뤄보자. 다음 블로그를 통해 공부를 했는데 크게 4가지의 Set 기본연산 메소드가 있다. https://0urtrees.tistory.com/101 swift Set 자료구조, 집합 기본연산 메서드 정리 안녕하세요! 저는 Develop 멍구 입니다. ^-^// 🤗 오늘은 스위프트의 자료구조 중 하나인 Set, 집합 컬렉션의 대표적인 집한연산 메서드를 정리해보겠습니다. 그럼 바로 시작하겠습니다~ 🤩 iOS swift 0urtrees.tistory.com 1. union : 두 개의 Set을 합집합을 구하는 기능이다. var set1 = [1,2,3,4] var set2 = [3,4,5,6,7] set1.u..
딕셔너리 타입을 이용해서 반복을 돌리는 경우를 은근 많이 겪었다. 물론 보통 (key, value)를 엮어서 사용할 줄 알지만 좀 더 다양한 방법을 공부했기에 적어두고자 한다. 다음 코드를 보면 모두 이해가 될 것이다. import UIKit let myFriends : [String: Int] = ["철수" : 19, "수잔": 23, "제임스": 30] // 이건 내가 평소에 쓰던 방식의 튜플을 이용해서 쓰는 방식이다. for (name, age) in myFriends { print("이름: \(name), 나이: \(age)") } // 하지만 이렇게 forEach와 클로져를 엮어서 적용하는 방법도 존재한다. myFriends.forEach { (name: String, age: Int) in p..
프로토콜은 그걸 준수하기 위해 쓴다. 근데... 어떤 경우엔 안쓰고 싶을 수도 있잖아..!! 그래서 방법으로 extension을 활용해서 init을 분리해서 반드시 상속하진 않아도 되는 방식으로 짜기도 했다. 하지만 또 다른 근본적인 방법을 고안해보면 @objc를 활용하는 방식이 있을 수 있다. 다음 코드를 보도록 하자. import UIKit // 원래 이런 방식으로 extension에 적용함으로서 doCry를 반드시 구현하지 않아도 되도록 구현할 수도 있지만, protocol Pet { } extension Pet { func doCry(){} } // 이런 식으로 오브젝트-c 프로토콜 내에서 optional 키워드를 주면 // 해당 멤버는 반드시 구현하지 않아도 문제가 없도록 프로토콜을 적용할 수 ..