일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- OS
- notion
- 부스트캠프
- development
- Hello
- boostcamp
- 네이버 부캠
- Design Pattern
- Swift
- Opensource
- 커스텀 뷰
- Tistory
- Cocoa Internals
- WWDC
- IOS
- World
- 후기
- 코코아 인터널스
- 부트캠프
- SwiftUI
- 디자인패턴
- rxswift
- 개발
- Algorithm
- 알고리즘
- 단위 테스트
- Today
- Total
목록Programming/iOS (17)
꿈돌이랜드
https://github.com/apple/swift-nioiOS 앱 내에 로컬 프록시 서버를 구축하기 위해 방법을 찾아보던 도중, 서버 개발을 위한 SwiftNIO라는 애플의 프레임워크를 알 게 되었습니다.사용 방법을 위해 README를 읽고 번역해보았습니다. 오역이 있을 수 있습니다.Swift로 서버를 구축해보고자 하시는 분들께 도움이 되었으면 합니다. SwiftNIO는 유지 관리 가능한 고성능 프로토콜 서버 및 클라이언트의 신속한 개발을 위한 크로스 플랫폼 비동기, 이벤트 드리븐 네트워크 어플리케이션 프레임워크.Netty와 비슷하지만, Swift용으로 작성됨.개요SwiftNIO는 기본적으로 Swift에서 고성능 네트워킹 어플리케이션을 구축하기 위한 도구.특히 thread-per-connect 동시..
🎹About Core AnimationIntroduces the main components and services of Core Animation.https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004514Core Animation은 CoreGraphics 보다 더 윗단의 프레임워크.iOS 앱을 프로그래밍 한다는 것은, 알든 모르든 Core Animation을 사용하고 있다는 것.Core Animation공식 문서 정의:Core Animation은 CPU에 부담을 주거나 앱 속도를 저하..

다음 애플 문서를 참고했습니다.Object archivingA collection of short articles on the core concepts, patterns, and mechanisms in Cocoa programming.https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/Archiving.html객체 아카이빙아카이빙은 객체 그래프를 응용 프로그램 간에 1)저장하거나, 2) 전송가능한 타입으로 변환하는 과정을 말합니다.아카이빙의 최종 결과인 아카이브는 객체의 ID, 캡슐화된 값, 다른 객체와의 관계가 기록된 byte stream입니다. 아카이빙의 반대인 언아카이빙은 아카이..

9.1 타입 시스템스위프트 타입 시스템은 자바스크립트나 파이썬처럼 자유로운 덕 타입 시스템이 아니라 명시적인 타입 시스템이다. 오브젝티브-C 처럼 모든 객체가 다이내믹 타입은 아니지만 프로토콜 타입을 활용해서 다이내믹하게 확장하면서도 오브젝티브-C보다 안전하게 쓸 수 있다.9.1.1 스위프트 타입스위프트에는 크게 두 종류의 타입이 있다. 이름 있는 타입(named type)과 이름 없이 합쳐진 타입(compound type)이다. 이름 있는 타입은 클래스, 구조체, 열거, 프로토콜 같은 타입의 이름이 미리 정해진 형태를 말한다. 기존 타입을 상속, 확장해서 나만의 이름을 주고 새로운 타입으로 지정할 수도 있다. 라이브러리에 포함하고 있는 배열, 사전, 옵셔널 타입도 모두 이름 있는 타입이다. 오브젝티브-..
…중략…8.2 스위프트 클로저클로저는 접근 가능한 특정 범위(scope) 내에서 사용하는 값을 (함수 내부에) 갖고 있는 함수를 의미한다. 스위프트에서 함수는 모두 클로저다. 그리고 스위프트에서 클로저는 함수이거나 이름 없는 그냥 클로저 중 하나다. 일부 스위프트 함수는 오브젝티브-C 블록 객체 형태로 호환 가능하다. 반대로 블록 객체는 스위프트에서 클로저처럼 호환성을 유지하면서 호출할 수 있다.8.2.1 클로저 형식…중략…스위프트에서 함수는 당연히 다른 함수의 인자 값으로 사용할 수 있다.…중략…참조 범위가 전체인 글로벌 함수는 이름은 있지만 캡처하는 변수가 없는 클로저가 된다. 다른 함수 내부에 선언한 중첩 함수는 감싸고 있는 함수 범위에 접근 가능한 변수들을 캡처하는 이름 있는 클로저가 된다. 마지..
7.1.1 두 단계 초기화 패턴초기화 과정코코아 프레임워크의 객체들을 포함해서 NSObject에서 상속받은 모든 클래스의 인스턴스가 만들어지기까지는 두 단계에 걸쳐서 초기화가 이루어진다.Pen *aPen = [[Pen alloc] init];첫 번째 단계에서 Pen 클래스에 alloc 메시지를 보내서, 힙 공간에 객체 인스턴스 메모리 공간을 할당한다. 두 번째 단계에서는 객체 인스턴스에 init 메시지를 보내서 객체 인스턴스 속성이나 내부에 필요한 객체나 값을 초기화한다. …중략… 1단계에서 메모리 할당이 되지 않으면, 2단계 초기화 과정은 진행이 불가능하다.…중략두 단계 초기화를 한 단계로 줄여서 사용하기 위해 간편한 메서드를 클래스 메서드로 제공하기도 한다.Pen *aPen = [Pen new];이 ..
🪙코코아 프레임워크 객체는 크게 두 가지로 분류할 수 있다. 하나는 객체를 초기화한 이후에는 내부 데이터를 변경할 수 없는 불변 객체이며, 다른 하나는 변경이 가능한 가변 객체다. 예를 들어 문자열을 다루는 NSString 클래스는 문자열을 바꿀 수 있는 인터페이스가 없는 불변 객체다. 가변 객체를 사용하려면 NSMutableString 클래스로 객체 인스턴스를 생성해야 한다.5.1.1 불변 객체의 특징불변 객체들은 다음과 같은 특징을 가진다.초기화 이후 객체 내부의 값이나 상태가 변하지 않는다.불변 속성 때문에 여러 객체에서, 여러 스레드에서 참조해도 안전하다.값이 바뀌는 상황을 고민하지 않기 때문에 설계가 쉽고 구현하기 수월하다.객체 내부에 모순된 상태가 줄어들어 부작용이 적다.…중략불변 객체를 사용..

4.1 NSCopying 계열 프로토콜코코아 프레임워크에서는 객체를 복사하기 위한 방법으로 또는 프로토콜을 지정해서 필요한 메서드를 구현하는 방법을 권장한다. 프로토콜은 객체를 복사하기 위해 클래스에 미리 구현해야 하는 복사용 메서드 목록을 지정해놓은 프로토콜이다. 애플이 만든 코코아 객체는 이미 프로토콜을 기반으로 만들어져 있어서 객체를 복사하기 쉽다. 프로토콜과 프로토콜 차이는 복사한 객체가 변경 가능한 객체인지 아닌지에 따라 달라진다.4.1.1 복사만 가능한 객체 프로토콜은 구현해야 할 메서드가 딱 하나뿐이다. 내가 만든 객체가 복사 가능한 객체여야 한다면 프로토콜을 선언하고 다음 메서드를 구현하면 된다.-(id)copyWithZone:(NSZone*)zone; // Objective-Cfunc c..