분류 전체보기
-
강한참조 사이클 - weak vs unownedSwift/swift 문법 2023. 4. 11. 17:59
[객체 간의 강한참조 사이클 예방법] weak 과 unowned의 공통점 : 가르키는 인스턴스의 RC의 숫자를 올라가지 않게 한다. 차이점 weak : 소유자에 비해 보다 짧은 생명주기를 가진 인스턴스를 참조할 때 주로 사용 -> nil 자동 할당 O (가리키는 객체가 사라졌을 시) unowned: 소유자보다 인스턴스의 생명주기가 더 길거나 같은 경우에 사용 -> nil 자동 할당 X, error 발생 [클로저에서의 강한참조 사이클 예방법] 캡처리스트 안에서 weak or unowned 사용
-
hashable 프로토콜Swift/swift 문법 2023. 4. 9. 22:55
- 고정된 길이의 숫자이면서 유일한 값으로 출력 Hashable의 의미 : 해당 타입을 해시함수의 input값으로 사용가능하다. swift에서는 String,Int,double 등의 기본 타입이 hashable 하다. -> hashable프로토콜 채택으로 값의 유일성을 보장할 수 있도록 만든다. hashable프로토콜의 요구사항 func hash(into hasher: inout Hasher) 구조체: hashable프로토콜만 채택하고 상세 구현은 선택 클래스: hashable 채택 후 요구사항 구현 필수
-
프로토콜 - Equatable, ComparableSwift/swift 문법 2023. 4. 3. 01:11
Equatable : '==' 오퍼레이터 오버로드가 필요 Comparable : 채택 시 비교 연산자 사용 가능 > , = ... Int Double String 에서는 채택 안해도 됨 미리 만들어 놓은 메서드 사용 -> Enum, struct, class에서 사용. 1.열거형에서 comparable 사용시 원칙: Comparable을 채택한 경우라도, *less then 연산자를 직접 구현해야 한다. Comparable 프로토콜 생성시 필수적으로 구현해야하는 매서드는? 1) == 2) >= 3) 드래그하시면 답을 볼 수 있습니다. 정답) 3 해설) less then 이외의 것은 같다 아니면 크다가 되므로..! Comparable 프로토콜은 Equatable 프로토콜을 상속받는다. -> 상위의..
-
Delegate 패턴iOS 앱 2023. 3. 31. 19:24
Delegate 패턴은 왜 사용하는가? : Delegate(대리자), 직접 행동하는 것이 아닌, 해야 할 행동을 위임한다. 1. 두 객체의 소통을 위한 delegate pattern 두 객체를 연결해 주고 싶을 때 사용 -> 이벤트를 받은 객체와 이를 처리할 객체가 다른 경우에 사용한다. 2. UI요소에서의 delegate pattern 인스턴스가 직접적으로 행위를 실행하기 어려운 경우에 사용한다. UI요소의 경우에는 직접 내부 코드를 수정할 수 없는 경우에 사용한다. UITableview의 내부 코드는 숨겨져있다. 따라서, delegate를 지정하고, 이 delegate에서 할 행동을 선언해주어야한다. Delegate 패턴 예시 protocol Remotecontrol{ func chanelUp() }..
-
화면전환 - 스토리보드 이용Swift/UIKit 2023. 3. 29. 23:52
화면을 전환하는 방법 중 스토리보드를 이용해서 전환하는 방법 1) 스토리보드 파일명 지정 (띄울 스토리보드의 파일명) 2) 스토리보드에서 가져온 데이터를 통해 뷰 컨트롤러 만들기 3) 뷰 컨트롤러 띄우기 [코드 예시] 1) 스토리보드 파일명 지정 (띄울 스토리보드의 파일명) let sb = UIStoryboard(name: "InfoVIewController", bundle: nil) 2) 스토리보드에서 가져온 데이터를 통해 뷰 컨트롤러 만들기 3) 뷰 컨트롤러 띄우기 //2) withIdentifier -> CollectionViewController의 storyBoard의 StoryboardId if let infoMealVC = sb.instantiateViewController(withIdenti..
-
확장에서의 생성자 사용Swift/swift 문법 2023. 3. 29. 00:22
클래스 - 편의생성자만 구현 가능하다. (self.키워드로 생성자 지정) 델리게이트 어크로스 : 편의생성자는 궁극적으로 지정생성자를 호출해야한다 // 참고 : 상속에서의 생성자 위임 규칙 1) 델리게이트 업 : 지정생성자는 슈퍼클래스의 지정생성자를 반드시 호출해야한다 2) 델리게이트 어크로스 : 편의생성자는 궁극적으로 지정생성자호출해야한다 구조체 - 지정생성자 형태로도 구현 가능하다.(자유) import Foundation class Aclass { var x: Int var y: Int init(x: Int, y: Int) { self.x = x self.y = y } convenience init() { self.init(x: 0, y: 0) } } class Bclass: Aclass { var z..
-
에러 처리Swift/swift 문법 2023. 3. 27. 21:21
함수에서 에러가 발생하는 경우 이를 알릴 수 있는 수단이 필요함. : 에러가 나올 수 있는 함수에는 표시하기로 함 (throws 키워드) 에러타입 정의 enum Errors: Error { case errorMax case errorMin } : 사전에 에러타입을 정의해주어야함. func checkError(a:Int) throws -> Bool{ // :throws 키워드로 에러를 던질 수 있음을 알림 if a > 5 { throw Errors.errormax //5 이상인 경우 에러타입 반환 } } 에러가 발생할 수 있는 함수 실행 방법 do { let result = try checkError(m:5) //try키워드 필수, 함수가 정상적으로 실행 된 경우에 result에 할당 } catch { /..