일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 위젯킷
- cs
- uikit
- TCA
- SwiftUI
- 1일1알골
- 컴퓨터그래픽스
- 영남대
- composable architecture
- c++
- swift concurrency
- dispatchqueue
- 스유
- 웹
- 문법
- widgetkit
- spritekit
- 알고리즘
- 백준
- 대외활동
- 멋쟁이사자처럼
- 스위프트
- 멋사
- 운영체제
- 리액트
- widget
- 후기
- Swift
- 네트워크
- Protocol
- Today
- Total
목록Swift (88)
맛동산이
DiscardableResult는 return type을 사용하지 않아도 에러가 발생하지 않음을 의미 Warning메세지: "Result of call to 'returnFunction(count:)' is unused" 가 발생했을때 이를 발생하지 않도록 하는 어노테이션이다. 여기에서 여기로 해결해준다.
리액터킷은 Flux와 Reactive Programming의 조합으로 만든 프레임워크이다. 유저액션과, 뷰 상태는 옵저버블(rx)스트림을 통해서 각각의 레이어에 전달된다. 여기에서 중요한점! 뷰는 액션만을 방출한다. 리액터는 상태만을 방출한다. 이것을 통해서 단방향 구조를 형성한다. 리액터킷의 특징 테스터블하다 뷰에서 로직을 분리하기 때문에(리액터를 통해서) 테스터블하다. 특정뷰에서만 채택이 가능 전체 아키텍쳐를 사용하지 않고 필요한 부분만 채택가능하다는 장점 타이핑이 적다 간결하게 코딩할수있다는 장점이 있다. View 리액터킷에서 뷰는 뷰 컨트롤러이다. 역할은 다음과 같다. 유저인풋을 받아들이고 이를 액션스트림에 추가한다. view state를 각 UI component에 추가한다.(bind) 뷰는 어..
associated type은 프로토콜에서 많이 보긴했는데 명확하게 이해가 안가서 한번더 정리한다. Generic 지네릭은 범용타입 T를 사용해서 컴파일 시점에 타입을 지정해주는 것을 의미한다. 지네릭을 사용하면, 하나의 코드에 유연하게 코드 중복을 피해서 다양한 타입을 삽입하여 사용할수 있게 된다. struct State { func plus(value: T) func minus(value: T) } 이런식으로 사용하게 된다. 하지만 이것을 프로토콜로 사용할때 동일하게 명시해줘야하는것을 associated type으로 작성을 대신한다. protocol protocol State { associatedtype typeA func plus(value: typeA) func minus(value: typeA..
이벤트성으로 변경하고 appIcon을 변경하고 싶을때는 다음과 같은 순서로 진행하면 된다. 1. 이미지 추가하기 이미지 파일을 Assets가 아닌 파일로 추가를 해줘야한다. copy items if needed를 체크하자~ 2. Info.plist 변경하기 info.plist에서 새로운 항목을 추가한다. icon files(iOS 5) 을 추가하고 해당 항목을보면 primary, newstand Icon가 있을텐데 primary는 앱 기본 icon의 이름으로 item0에 추가하면 된다. 다음은 CFBundleAlternateIcons를 딕셔너리로 생성한후 하위에 AppIcon을 딕셔너리 CFBundleIconFiles을 딕셔너리 Item(String)을 순서대로 만든다 귀찮은 여러분들을 위해 소스파일도 ..
DynamicMemberLookUp은 동적으로 런타임시 정해지는 임의의 name에 대해 dot으로 접근 가능하도록 하는 어노테이션 이다. Subscripts subscript는 우리가 array나, dictionary 와같이 인덱스값이나, 키값으로 접근을 할수 있도록 하는 기능을 의미한다. class, enum, struct 가 채택하고 있다. 이처럼 collection type은 subscript를 채택하고 있기 때문에 우리가 접근이 가능한것이다. public protocol Collection: Sequence { ... subscript(position: Index) -> Element { get } } 하지만 타입 안에서 만약 프로퍼티로 존재한다면, 상위객체에서는 바로 접근은 불가능하다 기본적으로..
struct Person { var name: String var age: Int } let jinyong = Person(name: "jin", age: 28) let jung = Person(name: "jung", age: 27) let shana = Person(name: "shana", age: 25) let people = [jinyong, jung, shana] var name = people.map { $0.name } // name = ["jin", "jung", "shana"] 이러한 코드가 있을때, 키패스를 사용하면 다음과 같이 동일하게 작동한다. var name = people.map { $0.name } var name = people.map(\.name) 키패스와 동일하게 작동하..
Cache 캐시(cache, 문화어: 캐쉬, 고속완충기, 고속완충기억기)는 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다. -위키피디아- memory 와 filemanager in memory 방식은 데이터의 읽기 성능을 높이기 위해서 DB와 같은 저장소에서 빠르게 가져올수 있는 메모리에 데이터를 올려두는 방식이다. Filemanager 방식은 파일 매니저를 이용하여 데이터를 파일 형식으로 디스크에 저장한다. 두개의 차이는 앱을 종료 해도 데이터가 남는지의 차이이다. 당연히 메모리는 날라가고, 파일로 저장된건 영구저장 swift에서는 in memory는 nscahce이며, filemanager는 userdefaults방식이다. userdefaults는 in memory 이지만, 동..
Framework Vs Library 프레임워크 '특정 프로그램을 개발하기 위한 여러 요소들과 메뉴얼인 룰을 제공하는 프로그램' 라이브러리 ‘소프트웨어를 개발하기 쉽게 도와주는 여러 기능을 제공하는 도구’ 가장 큰 차이점은 통제권이다. 프레임워크는, 통제권이 프레임워크한테 있다. 우리가 어떠한 소프트웨어를 만들기 위해서 특정 프레임워크를 사용한다면, 해당 프레임워크가 제공하는 룰 을 꼭 지켜서 만들어야 한다. 하지만 라이브러리는 그렇지 않다. 개발자가 원할때, 호출하는 것으로 능동적으로 사용할수 있는 도구인것. Static Library c언어에서의 static library는, 소스코드를 컴파일후 생성되는 object코드에서 static link방식으로 라이브러리를 link하고 이를 통해 실행파일이 생..
병렬 프로그래밍(Parallel Programming) 병렬프로그래밍이란, 여러개의 cpu가 하나의 task를 나눠서 처리하는것을 의미한다. 즉 예를들어, 파스타를 하나 만든다면 4개의 cpu가 서로, 면삶기, 소스만들기, 접시준비하기, 노래틀기 와 같이 일을 나눠서 한다고 생각하면 된다. 병렬프로그래밍이란, 멀티코어를 활용한 방법이다. 동시성 프로그래밍(Concurrent Programming) 동시성프로그래밍이란, 하나의 cpu가 동시에 여러개의 작업을 하는것을 의미하며, 실제로는 빠른속도의 context switching을 통해서 여러개를 동시하는것처럼 보이는 시분할 작업방법을 의미한다. 동시성 프로그래밍은 기존의 순서대로 명령들이 실행되는 구조에서 벗어나 명령들이 불규칙한 순서대로 실행될 수 있게..