일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UICollectionView
- clean architecture
- Xcode
- SWIFT
- Protocol
- tableView
- UITextView
- 리팩토링
- 리펙터링
- map
- 애니메이션
- 클린 코드
- Refactoring
- ribs
- Human interface guide
- rxswift
- swift documentation
- uitableview
- RxCocoa
- swiftUI
- combine
- collectionview
- 리펙토링
- 스위프트
- MVVM
- Observable
- HIG
- uiscrollview
- Clean Code
- ios
- Today
- Total
목록ios (1095)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/vCG2B/btrcrOVanh5/HvUyJJfLTvk2AzN5r9zNL0/img.png)
SwiftLint cocopads 설치: pod 'SwiftLint' Xcode에 SwfitLint 적용 설정 Targets > build phase > new run script phase run script 입력하면 완료 ${PODS_ROOT}/SwiftLint/swiftlint 적용이 되었는지 확인 > 경고 메세지가 생긴것을 확인 경고 메세지 or 컴파일 오류의 Rule: https://realm.github.io/SwiftLint/rule-directory.html Rule Directory Reference realm.github.io swiftlint 커스텀 empty 파일로 최상위 경로에 생성 Rule 정의 disabled_rules: 디폴트로 활성화되어있는 규칙 중 비활성화할 규칙을 정..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/s1etY/btrctw0GsRV/JIMl5X0zzSD27LgY5N28q1/img.png)
소스 코드의 의존성은 안쪽을 향하게끔 설계 안쪽으로 갈수록 잘 변하지 않는 요소들이기 때문 안쪽의 원은 바깥쪽의 원을 모르는 상태 바깥쪽의 원은 어떠한 것도 안쪽의 원에 영향을 주지 않는 구조 아키텍처 설계의 가정: 사용자(Actor)의 요구사항은 변경이 많이 없고 내부적으로 Web이나 DB, UI가 자주 바뀐다고 가정하여 설계 Entity Entity (=Enterprise Business Rules): Actor가 필요로 하는 데이터 모델을 의미 특정 '도메인'에서 사용되는 struct 모델 ex) Actor가 필요로하는 Movie와 MoviesPage에 관한 Entity struct Movie: Equatable, Identifiable { typealias Identifier = String en..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ew058M/btrcebb0JR8/Ui2Qfbg50Gs0U7yXp5uoh1/img.png)
API 테스트 사이트 참고 무료 API 테스트 사이트: https://reqres.in/ 위 링크 클릭, 복사: https://reqres.in/api/users?page=2 데이터 형식이 page, per_page, total, total_pages, data 형식인 경우 대응 - 두 데이터 사용 예정 Moya 프레임워크 네트워크 기본인 URL Session 개념 참고 moya 프레임워크 개념 참고 다운 > swift Package Manager > https://github.com/Moya/Moya.git Network 설계 주요 4가지 파일 NetworkLoggerPlugin: 네트워크 통신 시 MoyaProvider라는 객체를 통해 접근하는데, MoyaProvider의 파라미터 값으로 plug..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1HvAs/btrbuAKKMHS/lrWi8Tlk6qbJiVCZCFfpzk/img.png)
일반적인 Cache 방법 memory cache(메모리에 존재하는지 체크) 없다면 > disk cache(디스크에 존재하는지 체크) 있으면 Memory에 저장 후 캐싱, 없다면 > 서버통신 memory cache 방법 중 하나는 NSCache 사용 disk cache는 보통 FileManager객체를 사용하여 데이터를 파일 형태로 디스크에 저장하거나 UserDefaults, CoreData 사용 NSCache란? key-value쌍을 임시로 저장하는데 사용되는 변경 가능한 Collection NSCache는 자체적으로 시스템 메모리를 너무 많이 사용하지 않도록 자동으로 제거되는 정책을 소유 다른 응용 프로그램에서 메모리가 필요한 경우 이러한 정책은 캐시에서 일부 항목을 제거하여 메모리 사용 공간을 최소화..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b4FBTq/btrbodgVtRq/2sWxw5gqwo8QKOfUYbxms1/img.gif)
Cell 선택 UI 설정 방법 custom cell이 있다면 custom cell의 setSelected(:animated:) 함수에서 사용 tableView가 표출될때 초기에는 모든 cell이 선택되지 않은 상태 하나를 선택하면 나머지 cell이 선택되지 않은 상태가 되고 해당 cell 하나만 선택되게끔 내부적으로 동작 // 선택, 미선택에 따라 cell의 테두리 색깔을 다르게 하는 부분 // UITableViewCell을 상속받은 customCell안에서 override override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) if selected { conten..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2JFRD/btrbljWpWvA/aMGgXwoX09k03lAxYlYBrK/img.png)
Attributed text 개념 UILabel은 attributedText 프로퍼티를 가지고 소유 이름 그대로 Text에 '속성'값이 존재하는 프로퍼티 UILabel의 text에 font, color같은 속성값을 지정할수 있다는 의미 사용 방법 NSAttributedString 객체를 만들어서 프로퍼티에 대입 let fullText = label.text ?? "" let attribtuedString = NSMutableAttributedString(string: fullText) 대입 하기전에 font, color 속성값을 부여 > font, color속성값을 특정 문자열에 부여하기 위해서는 NSRange값을 이용 let range = (fullText as NSString).range(of: "i..
iOS 푸시 원리 앱 > 애플 서버에 토큰 요청 > 앱에서 토큰 수신 > push 서버에 토큰 등록 > push서버에서 가공된 내용 + token 앱에서 수신 > 애플서버에 다시 전송 > 애플서버에서 앱으로 최종 푸시 전송 앱에서 push를 “p8 or .p12 certificate 파일” 인증서와 함께 애플서버에 HTTP로 토큰 달라고 요청 애플 서버는 인증서, 프로파일을 받고 인증 후 토큰 응답 받은 토큰값과 메시지를 앱에서 push 서버로 POST방식으로 요청 push서버에서 POST요청을 받아 내용을 가공 > 애플 서버에 요청 (push서버에서는 APNs키가 등록되어 있어야함) 애플 서버는 토큰을 확인하고 토큰의 주인에 해당하는 아이폰 기기에 push 전송 앱 가동 APNs(Apple Push N..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bGcRey/btraRxPgzyY/7NpY1v23DjPsoCMkmX2ZP0/img.png)
일반 주석 vs 퀵 헬프 주석 일반 주석: // 퀵 헬프 주석: /// 퀵 헬프 Xcode에서 레퍼런스 문서의 요약된 내용을 보여주는 기능 option + 왼쪽 마우스 클릭 cmd + option + 3 퀵 헬프에 사용되는 주석 /// 사용 단축키: cmd + option + / /// 해당 클래스는 예제 클래스 class MyClass { let myProperty: Int init(myProperty: Int) { self.myProperty = myProperty } } 사용하는쪽에서 주석 확인 description삽입: > 사용 /** (해당 부분은 summary) 해당 클래스는 예제 클래스 > (해당 부분은 description) */ class MyClass { let myProperty: I..