- Total
목록전체 글 (209)
꿈꾸는리버리
UIKit을 공부하기 시작하면 delegate~~ delegate ~~~ 이.. 위임자.. 대리자... 뭐 그런 녀석들의 이름을 많이 듣는다. 블로그들을 보고 공식 문서를 봐도... 잘 이해가 되지 않고,.. 그래서 많이 애먹었던 ! 요 delegate 녀석을 다뤄보고자 한다 ! 어디서나 볼 수 있듯이 핵심은 delegate(대리자)는 "남의 일을 대신해야 하는.. 녀석" 이다.. 이렇게 말하면 이해가 잘 되지 않는다. ( 나는.. 그랬씁니다.. ) 🌷 예제를 통해 차근차근 알아가보자 ! class A { func work() { print("A가 일을 합니다") } } A는 work()라는 함수를 가지고 있는.. A 일을 하는 녀석이다. class B { weak var delegate: A? func..
지난 포스팅에서는 Pods를 이용해서 SwiftLint를 도입했다 ! 매우 뿌듯하고,,, 뿌듯한 일이었는데... 누군가가 왜 Pods를 썼어요 ? 뭐 이렇고 저런 이야기들을 들었다.. 다시 공부하기에 귀찮고 꼭 해야 하나,.. 라는 생각이 들었지만, 또 숙제가 될 바에는 얼른해보자 ! 하는 마음에 CocoaPod을 탈출했다 왜 Pods를 지양해야 할까? Pods로 하면,, 팀 내에서 버전 관리를 해야 한다고 한다. 또한 프로젝트 내에서 의존성은 하나로 맞추는 게 좋기 때문에 따로 관리하는 것은 좋지 않ㄷr... 아무튼 이런 저런 이유로 애플에서는 Swift Package Manager 를 쓰는 걸 지향하라구 하고 ! 근데 SwiftLint는 Package Manage가 없으니 .. homebrew를 사용..
이전포스팅에서 protocol에서 method나 init을 요구할 때에 대해 알아봤다. 이번 포스팅에서는 프로토콜을 상속하는 경우, class 전용 프로토콜, 그리고 프로토콜의 조합과 프로토콜을 준수했는지 확인하는 등...의 프로토콜의 또 다른 부분을 다뤄보고자 한다. 🌷 protocol의 상속 protocol은 하나 이상의 protocol을 상속 받아 기존 protocol의 요구사항보다 더 많은 요구사항을 추가할 수 있다. 클래스의 상속 문법과 유사하기 때문에 크게 어렵지는 않다 ! protocol FirstProtocol { var name: String { get } } protocol FirstProtocol2 { var height: Int { get } } protocol SecondProto..
이번 포스팅에서는 protocol에서 method나 init을 요구할 때에 대해 알아보고자 한다 ! protocol이 무엇인지와 protocol에서 property를 요구할 때 주의해야 하는 사항들에 대해 모른다면, 이전 포스팅을 보고 오는 것을 추천한다 ! 🌷 protocol 요구사항 ( 이전 포스팅 이어서... ) 2️⃣ method 요구 프로토콜은 특정 인스턴스 메서드나 타입 메서드를 요구할 수 있다. 이전에 말한 대로, protocol에서는 선언만을 해야 한다. 1) 따라서 protocol에서는 실제 구현부를 제외하고 매서드의 이름, 매개변수(가변 매개변수도 가능), 반환 타입 등을 작성해야 한다. 2) 이때, 프로토콜에서는 method의 매개변수의 기본값은 지정할 수 없다. 예시 코드 proto..
protocol.. 얇게 알았었던 protocol에 대해 이번 기회에 좀 더 깊게 공부해서 정리를 해보고자한다 ! 🌷 protocol이란? protocol은 특정 역할을 하기 위한 메소드, 프로퍼티, 기타 요구사항 등의 청사진(설계도)를 의미한다. 구조체, 클래스, 열거형은 정의된 프로토콜을 채택해서 특정 기능을 실행하기 위한 프로토콜의 요구사항을 직접 구현해야 한다. 이렇게 프로토콜의 요구사항을 모두 따르는 타입은 해당 프로토콜을 준수한다고 표현한다. -> 무슨 소리인가 싶은데,, 쉽게 말해서 "해당 protocol을 따르기 위해서는 protocol에 적혀있는 사항들을 모두 이행해야 한다" 라고 생각하면 이해하기 편하다. 그래서 처음배울때 "protocol == 약속"이라고 생각하세요~ 하는 거다. p..
🔧 문제 상황 우측 finder에는 존재하는 CustomTabView.swift가 좌측 xcode의 Views 파일 안에 CustomTabView.swift가 없는 걸.. 확인할 수 있다. 이 때문에 xcode가 CustomTabView를 못 찾아 빌드 에러가 발생했고 처음 접하는 문제라 너무 당황스러웠다..... -> 조금 알아보니까 이는 xcode에서 CustomTabView의 경로를 찾지 못해서 생기는 문제였다 ! 🌟 문제 해결 1) 마우스 우클릭을 통해서 add files to “프로젝트명” 클릭 2) finder안에 있는 CustomTabView.swift를 추가 3) Project -> Targets -> Build Phases -> Complile Sources 클릭 4) 이전에 경로를 못찾..
이렇게 SFSymbol에서 다양한 색을 선택해서 SFSymbol을 좀 더 다채롭게 꾸밀 수 있다. 이번에 프로젝트에서는 다음과 같은 하트를 만들어야 해서 StoryBoard에서 다음과 같이 설정해 줬다. 그리고 하트를 취소, 다시 셀렉 할 수 있기 때문에 변경하는 코드도 작성해보려 한다. 이렇게 config를 변경해서 Layers의 색을 변경했다 ! let config = UIImage.SymbolConfiguration(paletteColors: [.systemGray5, .systemGray, .darkGray]) let image = UIImage(systemName: "heart.circle.fill", withConfiguration: config) button.setImage(image, fo..
이렇게 가로모드가 지원이 안 되면 좋겠을 때가 있다.. 그저 귀찮아서! 이라면 가로모드도 지원이 되게 앱을 구현하는 게 맞지만, 내가 만들고자 했던 앱은 메모 앱이여서 가로모드를 지원할 필요가 없었다. 근데, 우측의 그림처럼 가로로 화면을 돌리면 이렇게 요소들이 배치가 된다. 방법) Supported interface orientations(iPhone)에 ⊖ 버튼을 눌러 item 1, item2를 삭제하면 가로모드를 사용하지 않을 수 있다. 짜란 ~