🍏/Swift(39)
-
[iOS / macOS] 내 맥북에서 서버를 만들고 내 아이폰과 소켓 통신을 해보자
들어가기 앞서iOS의 소켓 통신에 대해서 궁금해서 찾아보다가 정보들이 부실하기도 하고, SocketIO에 대한 정보가 많아서 First-party Framework인 Network를 통해 직접 소켓 통신을 해보고 정리해 보기 위해서 이 글을 작성합니다.사전 지식이전에 c++98(POSIX) KQueue로 http 서버를 만들어 본 적이 있습니다. (대략 소켓 통신과 fd, tcp/ip, udp에 대해서 알고 있다는 뜻) GitHub - MyLittleWebServer/webserv: Web server made with C++98Web server made with C++98 . Contribute to MyLittleWebServer/webserv development by creating an acc..
2024.12.31 -
[iOS] 데이터를 저장하는 방법들 / 간단 예제
간단한 예제들과 함께 알아보는 iOS에서 데이터를 저장하는 방법1. UserDefaultsNSUserDefaults에 저장되어 키-값 쌍으로 앱이 삭제되기 전까지 영구적으로 저장됩니다.간단하고 사용이 쉽습니다만 대규모 데이터나 민감한 데이터에 적합하지 않습니다.import Foundationclass UserDefaultsHelper { static let shared = UserDefaultsHelper() private let launchCountKey = "launchCount" private init() {} // 실행 횟수 읽기 func getLaunchCount() -> Int { return UserDefaults.standard.intege..
2024.12.31 -
[iOS] 에러 처리 / Error Handling
Swift의 에러 처리 방법Swift에서는 안전하고 명시적인 방식으로 에러를 처리하기 위해 에러 처리 기능을 제공합니다. Swift의 에러 처리는 에러를 발생시키고(throw), 전파하고(throws), 처리하는(catch) 방식을 기반으로 합니다.throws, try, catch 키워드의 사용 방법throws에러를 발생시킬 가능성이 있는 함수나 메서드에 사용합니다.throws를 선언한 함수는 호출할 때 반드시 try 키워드를 사용해야 합니다.enum NetworkError: Error { case invalidURL case noResponse}func fetchData(from url: String) throws -> String { guard url.starts(with: "http..
2024.12.30 -
[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