분류 전체보기 (21) 썸네일형 리스트형 너 T야? 어 제네릭이야~ 제네릭이란? 제네릭은 프로그래밍 언어의 다양한 타입에 대응하여 유연 코드를 만들어주는 친구입니다. 타입의 약자인T를 파라메터 이름으로 사용하지만 다른 이름도 사용 가능해요. 타입 파라미터를 2개이상을 선언하는 것도 가능합니다 구조체, 클래스, 열거형에서도 제네릭이 사용 가능해요. 제네릭의 특징 제네릭의 가장 큰 특징은 바로 '재사용성'과 '타입 안전성'입니다. 재사용성: 같은 로직의 코드를 다양한 타입에 대해 재사용할 수 있게 해줍니다. 타입 안전성: 제네릭을 사용하면 컴파일러가 타입 체크를 할 수 있으므로, 타입 관련 오류를 줄이고 코드의 안전성을 높일 수 있습니다. 좀 딱딱하죠? 바로 스펀지밥 예시로 가시죠! 징징이는 집게리아의 캐셔를 맡고 있어요. 현금은 보통 0단위로 떨어지니까 int, 카드는 소.. CodeBaseUI에서 UI컴포넌트를 선언하는 다양한 방법들 iOS 개발에서는 UI 컴포넌트를 선언하고 설정하는 정말 다양한 방법이 있습니다. 이번 아티클에서는 4가지 방법들을 소개시켜드리려고 해요! 기본적인 선언과 설정 먼저 가장 기본적인 형태로 UIViewController 내부에 UILabel을 선언하고 viewDidLoad에서 속성을 지정할 수 있는데요, class SomeViewController: UIViewController { private let someLabel: UILabel = UILabel() override func viewDidLoad() { super.viewDidLoad() someLabel.text = "블라블라" someLabel.textColor = .blue } } 이 방식은 직관적이고 단순하지만 UI 컴포넌트가 많아질수록 v.. 클로저 왜 씀? 클로저 그게 뭔데요?swift.org에 따르면 클로저는 이름없는 함수(코드 블록)을 말합니다. C 및 Objective-C의 블록과 JAVA의 람다와 유사하다고 하네요!클로저는 상수나 변수의 참조를 캡쳐(capture)해 저장할 수 있습니다.클로저를 사용하는 이유한마디로 말씀드리자면 코드를 굉장히 간결하게 작성할 수 있어요!집게리아에서 주문(order)를 받아 처리한 결과를 문자열로 반환하는 동작인데요, let orderProcessing: (String) -> String = { order in return "주문하신 \(order)를 만들었습니다."}print(orderProcessing("크랩버거"))동일한 기능을 수행하는 함수:func orderProcessing(order: String).. [값타입 vs 참조타입]을 '집게리아 레시피'로 이해 해보좌 1. 값 타입(Value Type)과 참조 타입(Reference Type)의 차이: 집게사장이 집게리아의 레시피를 복사하려고 합니다. 이 때 레시피를 복사하는 방법에 따라 값 타입과 참조 타입이 나뉩니다. 값 타입 값 타입은 집게사장이 레시피를 그대로 메모지에 옮겨 다른 곳에 붙이는 것과 같아요. 메모지에 옮겨적은 레시피를 수정해도 원본 레시피 북에는 영향을 주지 않죠. Swift에서는 구조체(Struct)와 열거형(Enum)이 값 타입입니다. struct Recipe { var name: String var ingredients: [String] } var originalRecipe = Recipe(name: "Krabby Patty", ingredients: ["Bun", "Patty", "Pick.. 피시테일 파카와 인이어를 통해 알아보는 아키텍처 공부의 필요성 아키텍처, 왜 공부해야할까요?아키텍처 적용의 장점에 대해 찾아보면 테스트 용이성, 의존성, 강한 결합 정말 많은 키워드가 나오는데요, 저는 처음 아키텍처를 공부했을 때 이런 키워드들이 정말 잘 와닿지 않았습니다. 보통 스토리보드에서 코드베이스로 넘어오면 viewController에서만 대부분의 작업을 하게되는것 같아요. 이런 방식은 간단하게 구현이 가능하다는 장점이 있지만 복잡한 뷰를 비효율적으로 짠다면 코드 양이 늘고, 디버깅을 하기도 어렵습니다. 저 또한 첫 프로젝트를 올리브영 앱을 클론코딩 했는데.. 뷰 컨트롤러 클래스가 천줄이 나오더라구요.. 하하 저는 이번 포스팅에서 우리가 일상생활에서 접할 수 있는 예시들을 활용하여 아키텍처 공부의 필요성에 대해 설명해보려고 합니다!강한 결합.. 왜 문제일까요.. 싱글턴 패턴이란? 싱글턴 패턴이 뭐죠? 싱글턴 패턴은 클래스의 인스턴스가 오직 하나만 생성되어 전역적으로 접근 가능하도록 보장하는 디자인 패턴입니다. 왜 써야하는거죠? 싱글턴 패턴을 사용하면 전역적으로 하나의 인스턴스가 생겼다는 것이 보장되면서도 어디서든 쉽게 접근이 가능해요. 즉 전역적으로 접근이 가능하지만 일관된 객체 생성이 보장되어야 할 때 유용합니다! 말이 좀 딱딱한 것 같아서 바로 집게리아를 활용해 예시를 들어보겠습니다 ㅎㅎ class CashRegisterManager { // 싱글턴 인스턴스를 저장할 static property를 선언 static let shared = CashRegisterManager() // 초기화를 private으로 선언하여 외부에서 인스턴스 생성을 막기 private init() {.. final 왜 씀..? 안녕하세요! 이번에는 final 키워드의 성능적 이점과 그 활용 예시에 대해 알아볼게요. 또한 이를 이해하기 위해 필요한 Static Dispatch와 Dynamic Dispatch, 그리고 vtable이라는 개념에 대해서도 함께 알아보도록 해요.📚 Dispatch란?먼저, 디스패치(Dispatch)라는 개념을 함께 알아볼까요? 디스패치는 어떤 메소드를 호출할지 결정하고 실행하는 메커니즘을 의미하는데요. 이는 크게 Static Dispatch와 Dynamic Dispatch로 나뉘어져 있어요.🚀 Static DispatchStatic Dispatch는 컴파일 타임에 실제 호출할 함수를 결정하는 방식이에요. 이 방식은 함수 호출이 간단하고 속도가 빠른 편이죠. 대표적으로 Swift에서 Value Typ.. 캡슐화 왜 해야함?? 캡슐화란? 객체의 속성과 메서드를 하나로 묶어 외부로부터의 직접적인 접근을 제한하고, 해당 객체의 메서드를 통해서만 변경이 가능하도록 하는 것 🤓 즉 캡슐화를 하면 코드의 복잡성을 관리하고 재사용성을 높일 수 있습니다. 캡슐화가 필요한 이유 4가지 정보은닉 - 클래스의 내부 구현을 외부로부터 숨기게 된다면 클래스의 사용자는 내부 구현에 대해 알 필요 없이 인터페이스(프로토콜)를 통해 클래스를 사용할 수 있습니다. 재사용성 - 독립적인 모듈을 만들어 다른 곳에서 재사용 할 수 있습니다. 유지보수 - 해당 클래스가 어떻게 구현되었는지 알 필요 없이 그 클래스를 사용하거나 수정할 수 있습니다. 안정성 - 어느 객체가 잘못된 방법으로 상태를 변경하면서 발생할 수 있는 오류를 방지할 수 있습니다. 이러한 이유로,.. 이전 1 2 3 다음