일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- swift concurrency
- 위젯킷
- 후기
- 영남대
- uikit
- 알고리즘
- 운영체제
- 스유
- dispatchqueue
- widgetkit
- 네트워크
- ReactorKit
- 컴퓨터그래픽스
- composable architecture
- spritekit
- widget
- 멋사
- SwiftUI
- cs
- 리액트
- TCA
- 백준
- 멋쟁이사자처럼
- 문법
- 웹
- Swift
- 대외활동
- Protocol
- 스위프트
- c++
- Today
- Total
목록앱/Swift (65)
맛동산이
예전에 urlSession을 간단하게 사용해본적은 있지만, 명확하게 사용을 깔끔하게 헤더와, 다양한 파라미터를 넣어서 사용해본적은 없기때문에 정리를 하게 됐다. URLSession의 큰틀은 다음과 같다. URL 생성 URL Request 생성 URLSession 생성 URLtask생성 resum 하지만, 여기에서 URLRequest 를 생성하는 시점에서 다양한 헤더, request body, parameter, query를 추가해서 다양한 내용을 전달할수 있기 때문에 이를 한번 디테일하게 정리해보자 한다. URLRequest struct Body: Codable { let page: Int let results: String let totalPages: Int enum CodingKeys: String,..
Combine을 처음 공부할때 가장힘들었던점 콤바인, rx모두 같은 맥락으로 처음 공부할때 힘든점은 그래서 subscriber, publisher가 뭔지는 알겠는데 어떻게 생성하는가? 이다. 따라서, 최대한 쉽게 나만의 해석을 하고 이해하여서 설명해보려고 한다. Combine을 사용하는 이유 우선 콤바인을 사용하는 이유를 이해 해야하는데, 콤바인을 사용하는 이유는 공식문서에 나와있다. 하지만 내가 생각하는 combine이나 rx를 사용하는 이유는 바로 데이터 바인딩을 하기 위함이다. 데이터 바인딩을 한다는 말은, 뷰에 있는 어떠한 컴포넌트(textfield, button, text..)에 이벤트 감지를 하고, 감지를 통해서 다시 어떠한 값의 변경을 이끌어 내는것을 의미한다 나는 이러한 방법에서 combi..
대표적으로 Foundation 프레임워크 내에서 텍스트 대치 방법은( 텍스트에 스타일을 추가해주는 방법 )은 크게 NSAttributedString NSMutableAttributedString 또한 하위로 문단 스타일을 설정하는데 있어서 NSParagraphStyle NSMutableParagraphStyle 가 있다. NSAttributedString nsAttributedString은 기본 시스템의 스타일이 아닌, 텍스트 자체에 다양한 설정을 추가할수 있는 텍스트 클래스를 의미한다. NSAttributedString 사용하는 방법 1. Attribute 선언하기 텍스트에 어떠한 설정을 주고 싶은지 미리 선언을 한다. let paragraphStyle = NSMutableParagraphStyle()..
nsLineBreakMode는 텍스트가 줄바꿈할때 어떻게 잘리는지에 대한 속성값이다. UILabel에 직접적으로 줄수있으니 어떻게 되는지 한번 살펴보자 byWordWrapping 단어가 한줄에 다 들어가지않으면 단어 단위로 줄바꿈을 한다는 속성 안녀어어어엉이 긴 단어고, 다음줄에서 끊기지 않게 하기 위해서 해당 단어에서 줄바꿈을 하게 된다. 따로 값을 주지 않는 경우에 기본값. byCharWrapping charWrapping의 경우 문자하나하나로 해서 문자단위로 줄을 끊게 된다. byClipping ByWordWrapping과 동일하게 작동한다. byTruncatingHead 줄바꿈이 없는경우 문장이 폭을 넘어가게 되면 앞부분을 …으로 처리하고 뒤에 부분이 나오도록 하는 속성 byTruncatingTa..
Then은 오픈소스라이브러리로, UIkit의 인스턴스를 생성할때 좀더 깔끔하게 생성하기 위한 라이브러리다. 기존의 UIkit코드는 다음과 같이 보통 사용하게 되는데 let topLabel = UILabel() topLabel.text = "hi" topLabel.textColor = .red 혹은 let topLabel: UILabel() { let label = UILabel() label.text = "hi" label.textColor = .red return label }() 와 같은 방법으로 생성하게 된다. 이를 좀더 깔끔하게 사용할수 있도록 해주는것이 바로 이 then이다. let topLabel = UILabel.then { $0.text = "hi" $0.textColor = .red } ..
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)을 순서대로 만든다 귀찮은 여러분들을 위해 소스파일도 ..