전체 글

전체 글

    [swift] Subscript 구현하기

    🤔 Subscript란? [ ] 을 이용하여 (단축키 처럼)값에 접근할 수 있도록 해주는 문법이다. 우리가 Array에서 [index] 를 사용해서 접근하거나, Dictionary 에 [key] 값으로 접근 했던 문법들은 subscript 로 구현되어 있는 것이었다. 클래스, 구조체, 그리고 열거형은 콜렉션, 목록, 또는 시퀀스의 멤버 요소에 서브스크립트를 구현해 줄 수 있다. 📖 Subscript 문법 subscript(index: Int) -> Int { get { // Return an appropriate subscript value here. } set(newValue) { // Perform a suitable setting action here. } } 연산 프로퍼티의 문법과 아주 유사하다...

    [WWDC] Architecting Your App for Multiple Windows

    이 글은 wdc 2019 Architecting Your App for Multiple Windows 보고 생각을 정리한 글 입니다. 🗒 간단 요약 ios13 부터 mutifle window 를 적용 함에 따라서 App delegate에서 하던 일을 App delegate가 Scene delegate 나누어서 한다. App life cycle, Scene life cycle 을 자세히 보면 이렇다. Scene 의 sync 를 맞추려면 지금까지와는 다른 구조로 짜야 한다. 자세하게 보도록 하자. 🤔 App degate 와 Scene delegate 가 나뉜 이유 ios12 까지는 process Lifecycle 과 UI lifecycle 을 모두 app delegate 에서 처리했다. 그럼에도 아무런 불편..

    [swift] String.Index 는 무엇일까?

    🧐 String.Index 타입이란? 스위프트에서는 String 타입의 인덱스를 나타내기 위해서 Int 를 사용하지 않고 String.index 라는 특수한 타입을 사용한다. 그럼 이 값을 인트로 변환할 수는 없는 건가? 할 수 가 없다. 에러가 뜬다.😭 우선 스트링은 heap 에 저장 된다. (WWDC에서 말한 내용이니 이것은 맞다.) 🚨여기서 부터 뇌피셜 주의 String.Index 의 공식 문서를 보면 이 타입이 인스턴스로 var hashValue: Int 를 가지고 있고 메서드로는 func hash(into: inout Hasher) 를 가지고 있다. 추측하기로는 String.Index은 뭔가 우리가 알수 없는 무슨 값을 가지고 있고 그걸 구현되어 있는 해쉬 함수에 넣어보니 어떤 Character..

    [swift] Substring는 왜 있는 걸까?

    🗒 Substring 이란? String 타입을 가지고 메서드로 변형을 하게 되면 이상하게 return 타입이 String 이 아니고 Substring 이다. 애플 공식문서가 말하길 Substring 타입은 String 타입과 거의 동일한 메서드를 가지고 있기 때문에 String처럼 사용할 수 있는 타입이라고 한다. @frozen struct Substring 🧐 Substring이 존재하는 이유 위의 말에 따르면 String이나 Substring이나 별 다를게 없다는 건데 그럼 왜? Substring 타입을 따로 만들었을까? (귀찮게...) 바로 성능 최적화 때문이라고 한다. Substring 타입은 String을 변환했을 때 생긴다. 그래서 저장 공간을 아끼기 위해서 변환하기 전의 String 타입의..

    [iOS] delegate 구현하기

    ✍🏻 delegate 패턴 이란? delegate 의 뜻은 위임이다. 나의 권한을 다른 사람에게 위임하다. 원래는 내가 사용하도록 가지고 있는 권한인데 다른 사람에게 내 권한을 사용할 수 있게 위임한다. 라는 의미로 사용 된다. delegate pattern 의 의미도 같다. 원래 나의 오브젝트가 처리할 권한을 가지고 있어서 처리해야 할 일을 다른 오브젝트에게 권한을 넘겨주어서 다른 오브젝트에서 처리하도록 해주는 패턴이다. ✍🏻 Delegate 패턴 예시 👧🏻 예시를 통해서 알아보자. 👨🏻‍💼 사장 클래스와 👩🏻‍💼직원 클래스가 있다. 회식을 하고 결제를 하는 일은 원래 사장님이 권한을 가지고 있는 일이다. 그런데 사장님이 이번 회식에는 참여를 못하게 되었다. 그래서 직원 한명에게 카드를 긁을 수 있는 ..

    [iOS] Notification Center 구현하기

    😁 노티피케이션 센터란? 노티피케이션 센터란, 등록된 관찰자에게 알려줄 수 있도록 하는 알림 메커니즘이다. KVO 나 delegate 가 1 대 1 통신을 하는 것에 가깝다면 노티피케이션 센터는 여러곳에서 온 정보를 한 곳에서 모아서 다시 여러 곳으로 뿌려주는 것에 가깝다. 그래서 많은 사람들이 방송국에 노티피케이션 센터를 비유한다. 💻 노티피케이션 센터 구현해보기 NotificationCenter 공식 문서 노티피케이션 센터라는 이미 만들어져 있는 클래스를 사용하면 된다. 노티피케이션 센터는 싱글톤으로 구현되어 있기 때문에 어디에서 불러와도 같은 객체를 불러오게 된다. 이 순서를 따라서 구현하면 된다. ✅ 노티피게이션 센터에서 값을 전달하기 (post) ✅ Observer 등록하기 ✅ Observer가..

    KVO 구현하기

    🗝 KVO란? KVO는 Key-Value observing 이다. 다른 오브젝트의 프로퍼티 속성이 변경되었을 때, 오브젝트에서 변경사항을 알 수 있게 해주는 것 이다. KVO는 NSObject 를 상속받은 클래스에서 사용할 수 있다. 오브젝트끼리의 응집력(끈끈하게 묶어줌)이 좋기 때문에, 항상 같이 다녀야 하고 코드의 재활용성이 떨어진다. 👊🏻 KVO 사용법 KVO 를 swift 코드에 적용해 보자. 📦 택배 클래스를 만들고, 택배의 배송정보가 업데이트 되면 자동으로 받아서 볼 수 있도록 하는 코드를 만들어 보자. 트랙킹할 클래스 지정 먼저 트랙킹할 (정보를 가져올) 클래스를 지정한다. 그 클래스를 아래와 같이 설정해 준다. class Shipping: NSObject { @objc dynamic var..