ios(113)
-
[Design Pattern] 내가 보려고 정리하는 Swift 디자인 패턴 (1) - 싱글톤 패턴(Singleton Pattern)
1️⃣ static : 타입 프로퍼티 (Type Property) 개념 정리Swift의 static 키워드는 인스턴스 생성 여부와 상관없이 무조건 1개의 값만 존재하는 프로퍼티를 선언할 때 사용한다.객체 지향 프로그래밍에서 처음 내가 어렵게 느꼈던 부분은 한 행위 또는 내용물에 대해 여러 표현법을 사용한다는 점이었다.그래서 이 글을 읽는 다른 사람들은 과거의 나 같은 어려움을 느끼지 않았으면 하는 마음에서, 용어를 먼저 정리해보고자 한다.인스턴스 = 클래스 혹은 구조체에서 찍어낸 결과물 = 붕어빵 틀에서 만들어진 붕어빵 = 객체 (매우 중요!)생성 = 클래스 혹은 구조체에서 결과물을 찍어냄 = 변수 또는 상수에 클래스/구조체를 기반으로 한 값을 대입함 = 클래스/구조체에서 비롯된 객체가 메모리에 실제로 ..
2024.02.19 -
[UIKit] 재사용 Component 개발하기 (1) - Toast Message
💡 재사용 Component 개발하기 시리즈 글을 시작하며 이번 33기 앱잼이었던 프로젝트에서 우리 iOS 팀이 추구한 방향 중 하나는, 앱 내에서 반복되는 컴포넌트(내비게이션바, 바텀시트, 알림 창, 토스트 메시지 등)를 재사용할 수 있도록 만드는 것이었다. 공통으로 반복되는 부분과, 변화가 필요한 부분을 고민해서 모듈화 시킨 과정을 이번 시리즈에서 같이 느껴볼 수 있길 바란다. 1️⃣ Toast Message란? 토스트 메시지(Toast Message)는 원래 안드로이드에만 존재하는 컴포넌트이다. 보통 앱 사용 중, 사용자와의 상호작용은 계속 열어둔 상황에서 동시에 짧은 메시지를 사용자에게 보여주기 위해 사용하는 컴포넌트다. 사용자의 인터랙션이 별도로 없어도 특정한 시간 뒤에 표출, 사라짐 동작이 자..
2024.02.16 -
[WebKit] WKWebView를 사용해서 앱 사용 중, 웹으로 연결시켜보자
1️⃣ 이번 글에서 구현하고자 하는 기능은?이번 글에서는 URL 링크를 저장하고, 해당 링크를 앱 안에서 웹 페이지로 띄울 때 사용한 모든 기능들에 대해서 정리해보겠다.이번 프로젝트에서 앱 내 웹 콘텐츠를 표출시키는 방식으로 WKWebView를 사용했다.WKWebView란 Apple의 기본 프레임워크 WebKit를 기반으로 동작하는 뷰이며, 네이티브 앱과 웹 콘텐츠 사이의 상호작용을 도와주는 다양한 기능을 지원하는 화면이다.대표적으로, 웹 뷰의 내비게이션(뒤로 가기, 앞으로 가기) 동작이나 새로고침, 페이지의 타이틀, URL 같은 기본적인 정보들을 받아올 수 있으며, 심지어는 웹 페이지의 로딩 상태나 스크롤 위치 같은 디테일한 부분도 사용할 수 있다.💡 앱 사용에 있어 외부 URL 연결 방식에 대한 생..
2024.02.15 -
[Swift] Swift는 에러를 어떻게 처리할까? (Error Handling)
오늘은 Swift에서 에러를 처리하는 방법, Error Handling에 대해 배워보도록 하겠다. 모든 프로그래밍 언어가 에러를 처리하는 방법을 가지고 있듯이, Swift도 마찬가지로 프로그램에서 발생한 에러 조건에 응답하고, 처리하는 프로세스를 갖고 있다. 공식문서 상에서는 이것을 "Swift는 런타임 에러를 던지고(throwing), 잡고(catching), 전파하고(propragating), 조작하는(manipulating) 방법을 모두 지원한다"라고 표현했다. 에러를 "던지고", "잡고", "전파"하고, "조작"한다는 말이 혹시 어렵지는 않은가...? (나만 그런가) 내가 공부를 했을 때, Swift 공식문서를 보고 공부하기에는 번역상으로 이해가 안 가는 말이 많아서 많은 어려움을 겪었는데, 이번..
2024.02.13 -
[Clean Architecture] OOP의 SOLID 원칙을 Swift의 관점에서 이해하기
0️⃣ OOP(Object-Oriented Programming)와 SOLID 원칙"일단 앱잼 기간 중에 빨리 기능부터 구현하고, 우리 앱잼 끝나면 진짜 리팩토링하자!"단기간에 결과물을 내야하는 솝트 동아리 내의 과제, 합동 세미나, 장기 해커톤 앱잼 같은 곳에서 가장 많이 들었고, 가장 많이 해온 말이다.하지만 해당 기능 개발이 끝나면, 또 다른 기능 개발이 개발자들을 기다리고 있고....또 다른 기능 구현을 우선적으로 하다 보면, 코드 정리나 프로젝트의 구조를 개선하는 일은 후순위가 항상 되기 마련이었다.어쩌면 리팩토링은 평생 동안 목표에 그칠 수밖에 없는 "이룰 수 없는 과제"일지도 모르겠다.그래서 나는 여기서 의문을 하나 가지게 되었다."겉으로 보이지 않는 코드의 퀄리티나 프로그램의 구조를 굳이 ..
2024.02.13