SWiFT(49)
-
[Vibe coding] Cursor, GPT와 함께하는 42과제(Swifty-Companion)
들어가기 앞서.요즘 실무 프로젝트를 진행하면서 부분 부분으로 Cursor, GPT를 굉장히 많이 쓰고 있는데, 갑자기 이 AI들의 한계가 궁금해져서, 42 과제를 처음부터 끝까지 AI에 맡겨 프로젝트 하나를 통째로 만들어 보고 싶어서 해보게 되었습니다.1. 참고로 저는 iOS 앱 개발자입니다.2. 42Outer에는 Swifty-Companion이라는 과제가 있습니다. 요약하자면 학생을 검색하는 과제. 계획Subject를 GPT에게 보내 요약정리를 한다.해당 내용을 바탕으로 Cursor에게딸-깍 진행Xcode로 앱을 생성.README.md 작성 (subject에 도도새 내용 있길래 이게 왜 적혀있을까 하면서 해석한 내용 적음... 내용정리한 거 안 올림..)PDF를 그냥 넣는 게 좋을 거 같아서, 프로젝트..
2025.09.03 -
[Swift] 접근 제어자(Access Control Levels)
접근 제어자(Access Control Levels)Swift의 접근 제어자는 코드 내에서 접근 가능한 범위를 정의하여 모듈성과 코드의 캡슐화를 향상시키는 데 사용됩니다. Swift에서는 다섯 가지 접근 수준을 제공합니다:1. open특징: 모듈 외부에서 접근 및 재정의 가능.사용 위치: 클래스 및 클래스 멤버에만 사용 가능.목적: 해당 클래스를 다른 모듈에서 확장(상속)하고, 메소드를 재정의하도록 허용.예시: 외부 모듈에서 상속과 오버라이드를 지원해야 하는 경우.open class Car { open func horn() { print("honk") }}open class Morning: Car { override open func horn() { print("..
2024.12.29 -
[iOS] Protocol / 프로토콜 / 개념 의미 요구사항 확장 POP
프로토콜 프로토콜은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의합니다.구조체, 클래스, 열거형은 프로토콜을 채택해서 특정 기능을 수행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있습니다.어떤 프로토콜의 요구사항을 모두 따르는 타입은 그 프로토콜을 준수한다고 표현합니다.타입에서 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 청사진의 기능을 모두 구현해야합니다. 즉 프로토콜은 기능을 정의하고 제시할 뿐이지 스스로 기능을 구현하지는 않습니다.공통 인터페이스 정의:서로 다른 타입에 동일한 동작을 강제.의존성 역전:코드의 유연성과 확장성을 증가.추상화:구체적인 구현이 아닌 동작에 집중. 프로토콜의 의미: 구현자와 사용자의 관점1. 구현하는 입장에서의 프로토콜프로토콜..
2024.12.29 -
[Swift] Singleton Multithread Strategy / 싱글톤 멀티스레드 전략
안전한 Singleton Pattern을 위환 Thread-Safe 관리우리는 앱에서 전역적인 리소스 공유, 앱 상태 관리, 네트워크 요청, 로깅 및 분석 등과 같은 곳에서 싱글톤 패턴을 활용합니다.이때 어디서든 동일한 인스턴스에 접근하게 되고, 앱이 복잡해질수록 데이터 레이스가 발생할 가능성이 높아질 수 있습니다. 이때 사용할 수 있는 방안에 대해서 몇 가지 예시를 제시합니다. 1. DispatchQueue를 활용한 데이터 동기화final class Singleton { static let shared = Singleton() private let queue = DispatchQueue(label: "com.singleton.threadsafe", attributes: .concurr..
2024.12.27 -
[Swift] (자료구조) 배열 / Array
1. 배열 (Array)정의: 고정된 순서로 데이터를 저장하는 선형 자료구조.특징:순서가 중요한 데이터 저장에 적합.상수 시간 복잡도(O(1))로 인덱스를 통해 접근 가능.장점:간단하고 사용이 쉬움.순차적 데이터 처리에 적합.단점:크기 변경이 비효율적. Array | Apple Developer DocumentationAn ordered, random-access collection.developer.apple.com // An array of 'Int' elementslet oddNumbers = [1, 3, 5, 7, 9, 11, 13, 15]// An array of 'String' elementslet streets = ["Albemarle", "Brandywine", "Chesapeake"]/..
2024.12.27