ios(86)
-
[Design Pattern] 내가 보려고 정리하는 Swift 디자인 패턴 (5) - 옵저버 패턴(Observer Pattern with NotificationCenter)
1️⃣ 옵저버 패턴 (Observer Pattern) 기본 개념 살펴보기옵저버 패턴 (Observer Pattern)의 개념은 매우 간단하다.한 객체에서 일어나는 정보를 다른 특정한 여러 객체들에게 전달할 때 사용하는 디자인 패턴이다.여기서 말하는 "객체에서 일어나는 정보"란 데이터의 추가/수정/삭제와 같은 변경사항, 객체에서 발생한 이벤트 등을 의미한다고 이해하면 되겠다.예시나 자세한 코드로 디자인 패턴을 살펴보기 전에, 앞으로 사용될 기본 개념들에 대해 살펴보고 넘어가 보자!*용어도 각 예시마다 다양하게 바뀌면서 사용되니까 모두 동일한 느낌으로 혼용해서 사용된다고 이해하면 좋겠다.Subject, Publisher (주제) : 옵저버들이 관심있게 보는 객체 (주제) = 특정한 이벤트가 발생되거나, 상태..
2024.05.14 -
[Swift] @discardableResult란 무엇일까?
예전 @IBInspectable @IBDesignable 글에서 Swift에서 사용하는 @ 키워드는 컴파일러에게 추가적인 속성이 부여되었음을 알리는 역할이라고 설명한 적이 있었다. 즉, 코드에 메타 데이터 (special attribute와 directive)를 추가하는 역할을 하는 키워드라고 생각하면 된다. 이번 글에서는 @키워드를 사용한 @discardableResult에 대해 설명해보고자 한다. 1. @descardableResult 기본 개념 descardable = 버릴 수 있는, result = 결과 즉, "결과를 버릴 수 있도록 하는 속성"을 추가로 부여한다는 키워드가 @descardableResult이다. 이 키워드가 함수에서 사용되는 키워드라는 점에서 볼 때, 함수에서 해당하는 결과는 "..
2024.04.18 -
[GitHub] 코드 리뷰 문화 - 토스터 iOS팀이 코드 스타일과 구성을 깔끔하게 유지할 수 있는 이유
팀 블로그에 올린 글입니다! 팀에서 사용한 협업 문화, Code Review 스타일을 비롯한 컨벤션까지 내용을 담고 있어 기록하고자 개인 블로그에도 공유합니다. [iOS] 코드 리뷰 문화: 토스터 iOS팀이 코드 스타일과 구성을 깔끔하게 유지할 수 있는 이유 안녕하세요! 토스터 iOS팀 개발자 코딩하는 체대생, 민군입니다. TOASTER 어플을 앱스토어에 릴리즈한지 어언 2개월이 지나고 있는 지금 시점에서, 저희 iOS 팀의 첫 번째 팀블로그를 작성하고자 힘 velog.io
2024.03.26 -
[Swift] for-in문과 forEach 사이의 차이, 그리고 고차함수(map, filter, reduce)의 활용까지
1️⃣ 내가 이 글을 쓰게 된 이유 프로그래밍을 조금이라도 배워본 사람이라면, 반복문의 대표주자로 for-in문이 있다는 것은 당연히 알 것이라 생각한다. Swift에도 당연히 for문을 지원하기에 평소 for-in 코드를 사용한 반복을 많이 사용하곤 했었는데, 반복을 목적으로 짠 코드에서 forEach문 역시 동일한 기능을 제공한다는 것을 다른 협업 팀원들의 코드에서 많이 확인할 수 있었다. 이에 그동안 나도 무지성 따라 치기(?) 스킬로 forEach라는 코드를 사용했지만, 사실 for문과 어떤 점에서 차이가 있는지, 성능 차이는 존재하는지에 대한 고찰이 없었기에 항상 공부하고 싶었던 내용이었다. 여기에 덧붙여, 최근 진행하던 프로젝트에서 iOS 멘토님에게 받은 피드백 중 하나가 "for + appe..
2024.03.11 -
[Design Pattern] 내가 보려고 정리하는 Swift 디자인 패턴 (4) - 빌더 패턴(Builder Pattern)
1️⃣ 빌더 패턴 (Builder Pattern)이 왜 필요하게 된 거지? 빌더 패턴 (Bulder Pattern)은 복잡한 객체를 생성하는 방법을 정의한 디자인 패턴이다. "복잡한 객체를 생성한다"는 말이 잘 와닿지 않을 수도 있어, 내가 주문했던 메뉴 중 가장 복잡했던 서브웨이 샌드위치를 예시로 들어보겠다. 서브웨이 샌드위치를 하나 시키기 위해서는 사소하게 주문해야 할 게 참 많았다. 빵은 어떤 것을 고를 거고, 치즈는 어떻게 할 거고, 야채는 어떤 것은 많이 넣고, 어떤 것은 빼고, 소스는 어떻게 하고... 등을 매번 일일이 주문하기 힘들었던 경험이 서브웨이에 한 번이라도 가본 적 있다면, 공감할 것이다. 이 상황을 iOS 개발자의 입장에서 를 객체로 바라보고 코드로 표현하면 아래와 같이 작성할 수..
2024.02.26