- Total
목록오뚝이 개발자 (209)
꿈꾸는리버리
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bKtNDN/btrIRGyC1g2/YVkJSQJrvEgqqHD56LrdkK/img.png)
launchScreen vs splash Image launchScreen이란 앱의 메인 화면이 나오기 전 로딩 시간에 보여주는 화면이다. launchScreen) 앱의 로딩시간이 길어 사용자에게 해당 앱이 열리고 있음을 알려주는 시그널 splash Image) 앱 브랜딩을 위해 launching 시간보다 더 오래 .. launchScreen화면을 띄우는 것 -> 애플은 splash Image가 해당 앱이 느리다는 것을 밝히는 일이기 때문에 만드는 것을 지양해야 한다고 하지만, 대부분의 앱의 경우에는 앱 브랜딩을 위해 splash Image가 존재한다. 다만 애니메이션이나 긴 시간의 splash Image가 아니라 1-2초 사이에서 빨리 사라지는 splash Image가 대부분이다. 1️⃣ launch ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bguRC5/btrNGw4q2Jj/aKrqDQCNdHQbcafJLHcSU1/img.png)
1) Date extension에 Date를 특정 형태의 String값으로 변형하여 반환하는 함수를 생성한다. extension Date { enum DataFormatCatagory: String { case koreanDate = "yyyy년 MM월 dd일(EEEEE)" } func convertDateToKoreanDate(_ dataFormatCatagory: DataFormatCatagory) -> String { let formatter = DateFormatter() formatter.dateFormat = dataFormatCatagory.rawValue formatter.locale = Locale(identifier: "ko_KR") let koreanDate = formatter.st..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cSfEyi/btrH1bT1IN2/RXJmNPGnvqdw1YOlYkaNhK/img.png)
이전 포스팅에서는 아주 간단한 예제를 통해서 delegate가 뭔지에 대해 알아봤다 이번 포스팅에서는 실제 UIKit 에서 어떻게 쓰이는 지 예시를 통해 알아보도록 하겠다 ! 🌷 하고자 하는 것 FirstViewController 에서 SecondViewController로 이동을 하고, SecondViewController의 textField에서 입력한 값을 FirstViewController에 보여주는 것 ! SecondViewController에서 FirstViewController로 값을 보낼 때 delegate를 이용해서 보내줄 거다. -> SecondViewController에서 FirstViewController로 text 값을 넘겨주면 FirstViewController에서 하늘색 뷰의 l..
UIKit을 공부하기 시작하면 delegate~~ delegate ~~~ 이.. 위임자.. 대리자... 뭐 그런 녀석들의 이름을 많이 듣는다. 블로그들을 보고 공식 문서를 봐도... 잘 이해가 되지 않고,.. 그래서 많이 애먹었던 ! 요 delegate 녀석을 다뤄보고자 한다 ! 어디서나 볼 수 있듯이 핵심은 delegate(대리자)는 "남의 일을 대신해야 하는.. 녀석" 이다.. 이렇게 말하면 이해가 잘 되지 않는다. ( 나는.. 그랬씁니다.. ) 🌷 예제를 통해 차근차근 알아가보자 ! class A { func work() { print("A가 일을 합니다") } } A는 work()라는 함수를 가지고 있는.. A 일을 하는 녀석이다. class B { weak var delegate: A? func..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bRnfI9/btrH32hkleT/GoG8Y5NzNMfQ1f2bkk9FMk/img.png)
지난 포스팅에서는 Pods를 이용해서 SwiftLint를 도입했다 ! 매우 뿌듯하고,,, 뿌듯한 일이었는데... 누군가가 왜 Pods를 썼어요 ? 뭐 이렇고 저런 이야기들을 들었다.. 다시 공부하기에 귀찮고 꼭 해야 하나,.. 라는 생각이 들었지만, 또 숙제가 될 바에는 얼른해보자 ! 하는 마음에 CocoaPod을 탈출했다 왜 Pods를 지양해야 할까? Pods로 하면,, 팀 내에서 버전 관리를 해야 한다고 한다. 또한 프로젝트 내에서 의존성은 하나로 맞추는 게 좋기 때문에 따로 관리하는 것은 좋지 않ㄷr... 아무튼 이런 저런 이유로 애플에서는 Swift Package Manager 를 쓰는 걸 지향하라구 하고 ! 근데 SwiftLint는 Package Manage가 없으니 .. homebrew를 사용..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjxip9/btrH1CDnbtc/V4RDRiix2FRrU3aGRIDnT1/img.png)
이전포스팅에서 protocol에서 method나 init을 요구할 때에 대해 알아봤다. 이번 포스팅에서는 프로토콜을 상속하는 경우, class 전용 프로토콜, 그리고 프로토콜의 조합과 프로토콜을 준수했는지 확인하는 등...의 프로토콜의 또 다른 부분을 다뤄보고자 한다. 🌷 protocol의 상속 protocol은 하나 이상의 protocol을 상속 받아 기존 protocol의 요구사항보다 더 많은 요구사항을 추가할 수 있다. 클래스의 상속 문법과 유사하기 때문에 크게 어렵지는 않다 ! protocol FirstProtocol { var name: String { get } } protocol FirstProtocol2 { var height: Int { get } } protocol SecondProto..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bMHdDr/btrH6II5pbL/0UVwkpSk8KbOVVlTR4eSd0/img.png)
이번 포스팅에서는 protocol에서 method나 init을 요구할 때에 대해 알아보고자 한다 ! protocol이 무엇인지와 protocol에서 property를 요구할 때 주의해야 하는 사항들에 대해 모른다면, 이전 포스팅을 보고 오는 것을 추천한다 ! 🌷 protocol 요구사항 ( 이전 포스팅 이어서... ) 2️⃣ method 요구 프로토콜은 특정 인스턴스 메서드나 타입 메서드를 요구할 수 있다. 이전에 말한 대로, protocol에서는 선언만을 해야 한다. 1) 따라서 protocol에서는 실제 구현부를 제외하고 매서드의 이름, 매개변수(가변 매개변수도 가능), 반환 타입 등을 작성해야 한다. 2) 이때, 프로토콜에서는 method의 매개변수의 기본값은 지정할 수 없다. 예시 코드 proto..
protocol.. 얇게 알았었던 protocol에 대해 이번 기회에 좀 더 깊게 공부해서 정리를 해보고자한다 ! 🌷 protocol이란? protocol은 특정 역할을 하기 위한 메소드, 프로퍼티, 기타 요구사항 등의 청사진(설계도)를 의미한다. 구조체, 클래스, 열거형은 정의된 프로토콜을 채택해서 특정 기능을 실행하기 위한 프로토콜의 요구사항을 직접 구현해야 한다. 이렇게 프로토콜의 요구사항을 모두 따르는 타입은 해당 프로토콜을 준수한다고 표현한다. -> 무슨 소리인가 싶은데,, 쉽게 말해서 "해당 protocol을 따르기 위해서는 protocol에 적혀있는 사항들을 모두 이행해야 한다" 라고 생각하면 이해하기 편하다. 그래서 처음배울때 "protocol == 약속"이라고 생각하세요~ 하는 거다. p..