Swift의 문자열(String) 다루기와 관련된 주요 기능은 무엇이 있나요? Swift의 String 타입은 유니코드 규격을 완전히 지원하며, 다양한 언어, 이모지, 조합 문자 등도 정확하게 처리할 수 있도록 설계되어 있습니다. String은 Character 타입의 컬렉션이며, 각 문자는 하나 이상의 유니코드 스칼라로 구성될 수 있습니다.인덱싱은 정수(Int)가 아닌 String.Index를 사용하여 유니코드 경계를 정확하게 다루며, 문자열 연결(+), 분할(split), 결합(joined), 접두사/접미사 검사(hasPrefix, hasSuffix), 공백 제거(trimmingCharacters), 대소문자 변환(uppercased, lowercased) 등의 다양한 문자열 조작 기능을 제공합니다...
1. Debug Memory Gragh사용을 위한 기본적인 세팅 Malloc Scribble메모리가 해제될 때, 해당 영역에 **특정 패턴(0xAA)**을 써서 마킹이 상태에서 해제된 메모리에 접근하려고 하면, 이상한 값에 접근하게 되어 빠르게 오류를 잡을 수 있다.Malloc Stack Logging메모리가 할당될 때마다, 그 시점의 Call Stack을 저장.Instruments (Allocations)와 함께 사용하면, 누수 객체가 어디서 생성됐는지 추적 가능. 분석 결과 해당 사진과 같이 오류 내역이 없고 메모리 누수나 에러를 발생하고 있지 않는다.추가적으로 모델과 컨트롤러에 아래 코드를 추가하여 호출 여부를 확인해주었다.deinit { print("deinitialized") ..
iOS 앱 개발을 하며 규모가 커질수록 기능마다 역할과 책임이 명확히 나뉜 구조가 필요하다는 것을 느꼈고, 그 해답 중 하나로 Clean Architecture를 도입해보았습니다. 이 글은 Clean Architecture의 핵심 개념과 이를 iOS 프로젝트에 어떻게 적용했는지를 정리한 기록입니다.Clean Architecture란?Clean Architecture는 의존성 방향이 바깥에서 안으로만 흐르고, 핵심 로직(비즈니스 규칙)을 외부 구현과 분리하는 소프트웨어 아키텍처입니다. 이 구조는 Robert C. Martin(aka. Uncle Bob)이 제안했으며, 다음의 원칙을 따릅니다의존성은 안쪽 계층으로만 흐른다.바깥 계층은 안쪽 계층의 존재를 알 수 있지만, 그 반대는 아니다.구현보다 추상에 의존..
회원가입 화면을 UIKit + MVVM 구조로 구현하던 중, 모든 입력이 유효함에도 회원가입 버튼이 비활성화되어 있는 문제가 발생했습니다.이 글에서는 그 문제의 원인을 분석하고 해결한 과정을 기록합니다. 문제 상황회원가입 화면에서 다음 조건을 모두 만족했음에도 불구하고,닉네임 / 이메일 중복 확인 완료필수 약관 동의 체크 완료비밀번호, 비밀번호 확인 입력 완료 및 일치회원가입 버튼이 활성화되지 않고 비활성화 상태로 유지되는 문제가 발생했습니다.원인 분석MVVM 구조로 구현된 프로젝트에서 ViewModel은 사용자 입력 상태를 바탕으로 isFormValid 값을 계산하고, 클로저를 통해 View에 전달하고 있었습니다.viewModel.isFormValidChanged = { [weak self] isVal..
문제 정의환율 계산기 앱을 만들던 중 UITableViewCell에서 다음과 같은 오류 로그가 반복 출력됐다Changing the translatesAutoresizingMaskIntoConstraints property of the contentView of a UITableViewCell is not supported and will result in undefined behavior...Unable to simultaneously satisfy constraints.Will attempt to recover by breaking constraint...이 오류는 contentView에 명시적으로 제약을 주거나 translatesAutoresizingMaskIntoConstraints = false를..
iOS 개발을 시작하면서 가장 처음 마주하게 되는 개념 중 하나가 바로 ViewController이다. 화면 하나를 담당하며, 그 안에서 사용자와의 상호작용을 처리하는 중심 역할을 한다.이번 글에서는 ViewController가 어떤 역할을 하는지, 그리고 iOS에서 어떤 순서로 생명주기 메서드들이 호출되는지 정리해보려고 한다. 직접 실습하며 알게 된 내용을 바탕으로, 처음 접하는 분들도 이해하기 쉽게 풀어보았다.ViewController란?앱 내 하나의 화면을 담당하는 컨트롤러화면에 보이는 모든 뷰(UIView, UIButton, UILabel 등)를 관리사용자의 액션에 따라 데이터를 변경하거나 다른 화면으로 전환UIKit의 기본 구성 요소Apple 공식 문서에서는 UIViewController를 다음..