[Swift] 좋은 코드 만들기
·
Apple/Swift
안녕하세요! 피피아노입니다 🎵 오늘은 "좋은 코드"에 대해 이야기해보려고 합니다.개발을 하다 보면 한 번쯤 이런 생각을 하게 됩니다. 대체 좋은 코드가 뭘까요?동작만 잘하면 좋은 코드일까요?아니면 짧으면 좋은 코드일까요?아니면 디자인 패턴이 많이 들어가 있으면 좋은 코드일까요? 음... 사실 좋은 코드를 한 문장으로 정의하기는 어렵습니다. 그런데 반대로 좋지 않은 코드는 생각보다 금방 느껴집니다. 읽기 어렵고, 수정하기 무섭고, 기능 하나 추가했을 뿐인데 여기저기서 문제가 터지는 코드 말이죠.그래서 이번 글에서는 좋은 코드를 만들기 위한 기준을 크게 네 가지로 정리해보겠습니다.Naming상수화관심사의 분리View Component 분리가볍게 시작해보겠습니다.Naming코드를 작성할 때 가장 많이 하는 ..
[Swift] 왜 동시성 프로그래밍이 필요할까?
·
Apple/Swift
안녕하세요! 피피아노입니다 🎵 예전에 동시성에 대한 포스팅을 몇 번 한 적이 있는데 이 동시성이라는 개념이 왜 나왔고 왜 필요한지에 대한 설명이 부족한 것 같아서 이번 포스팅에서 조금 더 자세히 정리를 해보려고 합니다. iOS 앱을 개발하다 보면 네트워크 요청, 이미지 로딩, 파일 I/O처럼 시간이 걸리는 작업을 반드시 다루게 됩니다. 이 작업들을 잘못 처리하면 앱이 멈추거나 UI가 버벅이는 문제가 생깁니다. 동시성 프로그래밍은 바로 이 문제를 해결하기 위한 도구입니다. 1. 문제의 시작 — 메인 스레드iOS 앱은 시작될 때 메인 스레드(Main Thread) 하나가 생성됩니다. 이 스레드는 두 가지 역할을 동시에 담당합니다.UI 렌더링 (버튼, 텍스트, 애니메이션 등)사용자 이벤트 처리 (터치, 스크..
[Swift] ARC(Automatic Reference Counting)란 무엇인가
·
Apple/Swift
Swift로 개발하다 보면 [weak self]나 unowned를 코드 곳곳에서 마주치게 됩니다. 이것들이 왜 필요한지, 언제 써야 하는지 명확하게 이해하려면 ARC를 알아야 합니다. 이번 포스팅에서는 ARC가 무엇인지부터 실제 문제가 발생하는 상황과 해결 방법까지 정리를 해보려고 합니다. ARC란?ARC(Automatic Reference Counting)는 Swift가 메모리를 자동으로 관리하는 방식입니다. 클래스 인스턴스가 생성되면 Swift는 해당 인스턴스에 대한 참조 카운트(Reference Count)를 1로 설정합니다. 이후 어딘가에서 이 인스턴스를 참조할 때마다 카운트가 1씩 증가하고, 참조가 끊길 때마다 1씩 감소합니다. 카운트가 0이 되는 순간 메모리에서 해제됩니다. class Use..
[Xcode] Xcode 디버깅 가이드
·
Apple/Xcode
안녕하세요! 피피아노입니다 🎵 이번 포스팅에서는 디버깅을 하는 방법에 대해서 정리를 해보려고 합니다. 우선 기본적인 용어부터 정리해보겠습니다.콘솔(console): Xcode 아래에 뜨는 작은 창. 앱이 찍는 메시지가 나오는 화면로그(Log): 앱이 실행되면서 남기는 기록(대표적인 예가 print()로 찍는 것)브레이크 포인트(Breakpoint): 코드의 특정 줄에서 멈추게 하는 장치디버거(Debugger): 앱을 멈추거나 한 줄씩 실행시키면서 상태를 보는 도구lldb: Xcode에 내장되어 있는 디버거(콘솔에 명령어를 쳐서 사용)크래시(Crash): 의도치 않게 앱이 종료되는 현상가장 기본적인 디버깅가장 기본적인 것은 아마 많은 분들이 코딩을 처음 접할 때 쓰시는 print 함수를 사용하는 것입니다..
[Swift] 왜 Class는 Initializer를 자동으로 만들어주지 않을까?
·
Apple/Swift
안녕하세요! 피피아노입니다 🎵 Swift로 개발을 하다보면 한 가지 의문이 생기게 됩니다. 구조체인 Struct는 프로퍼티만 선언하면 init이 자동으로 생기는데, Class는 왜 직접 써줘야 할까?struct Point { var x: Int var y: Int // init(x: Int, y: Int) 자동 생성 }class PointClass { var x: Int var y: Int // 자동 생성 안 됨 -> 직접 써야 함} Struct는 왜 자동 생성이 가능할까?Struct는 상속이 없습니다.(상속이 안 되는 건 아닌데 일단 그냥 구조체와 클래스 두가지로만 보면)컴파일러의 입장에서 보면, 지금 선언된 프로퍼티가 이 타입의 전부입니다. 그래서 모든 프로퍼티를 ..
[SwiftUI] Observation 알아보기
·
Apple/SwiftUI
Observation이 뭘까?Observation은 프로퍼티의 변화를 추적하는 Swift의 새로운 기능입니다. 보통 데이터 모델 타입을 작성할 때는 여러가지 프로퍼티가 들어갑니다.class FoodTruckModel { var orders: [Order] = [] var donuts = Donut.all} 여기에 @Observable을 추가하기만 해도 UI가 데이터 모델의 변화에 대응할 수 있게 됩니다.@Observable class FoodTruckModel { var orders: [Order] = [] var donuts = Donut.all} @Observable은 Swift 컴파일러에게 명령을 내려서 우리가 작성한 코드를 확장형 observable 타입으로 바..