일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- entrypoint
- IBOutletCollection
- 트레일링 클로저
- for-in
- AppTransportSecurity
- 원격 푸시
- UIButton
- TableView
- 진입점
- Choosing Between Structures and Classes
- firebase
- SWiFT
- tableViewCell
- 연산 프로퍼티
- RunLoop
- 후행 클로저
- WWDC16
- ios
- 동시성프로그래밍
- Understanding Swift Performance
- DispatchQueue
- OperationQueue
- weak
- uikit
- userdefaults
- viewcontroller
- IBOutlet
- property wrapper
- CoreLocation
- Remot Push
- Today
- Total
목록iOS (20)
iOS 공부하는 감자
Remote Notification 서버로부터 받은 정보로 Push를 띄우는 것. ex) 쿠팡 특가 알림, 이벤트 Push 수신 등.. 시뮬레이터에서는 Remote Notification 테스트가 불가능 -> Local Notification만 테스트가 가능했다. 하지만 Xcode 11.4 이후로 시뮬레이터에서도 Remote Notification을 수신할 수 있도록 지원하기 시작했고, 별도 설정을 거치면 시뮬레이터에서도 테스트가 가능하다. APNs (Apple Push Notification System) Push Notification을 관리하는 애플의 시스템으로, 모든 푸시는 APNs를 통해 사용자에게 전달된다. APNs를 사용하기 위한 Key는 애플 개발자 계정이 있어야 사용할 수 있다. Remo..
iOS에서 앱을 사용하다 보면 아래와 같은 권한 요청 메시지를 자주 보게 되는데, 보안을 중요하게 생각하는 애플이 위치를 포함한 카메라, 연락처 등 민감한 개인정보에 대해 사용자에게 먼저 권한을 부여받아야 사용할 수 있도록 만들어두었기 때문이다. WWDC의 "what's new in Privacy"를 통해 보안을 점점 강화하고 있고, 사용자 중심으로 개발하는 것을 요구하고 있다. 때문에, 권한 설정이 올바르지 않은 앱은 출시 과정에서 리젝 사유가 된다. 리젝 당하는 경우 권한에 대한 필요성 Description이 명확하지 않은 경우 앱에 꼭 필요하지 않은 권한을 등록한 경우 여러 권한 중 위치 정보를 받아오기 위해서는 다음과 같은 순서로 작업하면 된다. info.plist에 필요한 권한 추가 & Desc..
보호되어 있는 글입니다.
RunLoop란? 런루프 객체는 소켓, 파일, 키보드, 마우스 등의 입력 소스와 타이머 이벤트 등을 수신하고 처리하는 이벤트 처리 루프이다. 특정 이벤트가 발생했을 때, 스레드가 일해야 할 때는 일하고, 일이 없으면 쉬도록 하기 위해 애플에서 만든 스레드 관리 Loop이다. RunLoop가 수신하는 이벤트 Input Sources : 다른 스레드나 다른 응용프로그램의 비동기 이벤트를 수신하고, 이벤트 핸들러를 수행한다. Timer Sources : 예정된 시간이나 반복되는 간격으로 발생하는 동기 이벤트를 수신하고, 이벤트 핸들러를 수행한다. 각 스레드는 1개의 RunLoop를 가지며, RunLoop는 수신받은 이벤트를 모아 두었다가 실행되는 순간에 모아두었던 이벤트에 대한 핸들링 처리를 수행한다. (+ ..
Cell 내부에 구현된 버튼의 Touch Event를 ViewController에서 처리하는 것이 좋은 이유 Event 핸들링은 ViewController에서 처리하는 것이 유지보수에 좋다. 버튼의 Touch Event로 Data처리가 필요한 경우, ViewController를 통해 Model의 Data에 접근하여 처리할 수 있다. TableViewCell 파일에 IBAction으로만 기능을 구현하면, 모든 Cell의 버튼이 동일한 기능을 수행하므로 각 Cell별로 분기처리가 필요한 경우 구현하기 까다롭다. 다음의 3가지 방법을 통해 Cell에 있는 Button Action을 ViewController에서 처리할 수 있다. Button에 Tag를 부여해서 처리 CallBack 함수(클로저)를 사용하여 처..
CollectionView란 iOS 프로그래밍에서 가장 핵심적인 UI 구성 방법이다. 기본적으로 UIScrollView를 상속하여 스크롤 기능이 내장되어 있으며, 여러 데이터를 보여주기 효과적이다. CollectionView가 데이터를 표현하는 방식 Width의 값이 디바이스의 너비로 고정되는 TableView와 다르게, CollectionView는 Layout을 잡기 위해 각 아이템의 width, height 정보가 모두 필요하다. CollectionView에는 정확한 Layout을 설정하기 위해 Layout을 전문적으로 설정하는 객체가 있다. 둘 다 UICollectionViewLayout을 상속받은 클래스이다. FlowLayout : 전통적으로 사용하던 방식 CompositionalLayout : ..
ATS란 애플리케이션과 웹 서비스 사이에 통신에서 보안 향상을 위해 iOS 9.0부터 도입된 보안 정책으로, 보안이 취약한 네트워크를 차단하고, 모든 인터넷 통신 시 안전한 프로토콜을 사용하는 것을 보장한다. 프로젝트를 생성하면 자동 적용되며, 암호화 처리되지 않는 HTTP를 사용하여 네트워크 통신을 시도하면 아래와 같은 에러 로그를 띄우며 통신이 실패한다. (+ ImageURL을 사용하여 이미지를 불러올 때, URL 주소가 HTTPS가 아니라면 이미지를 불러올 수 없다.) "App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Use HTTPS instead or add Except..
UserDefaults란? iOS 앱에서 데이터를 영구적으로 보관하기 위해서는 다음과 같은 다양한 방법이 있다. 서버 CoreData UserDefaults KeyChain 그중 UserDefaults는 앱이 실행되는 동안(런타임) Key-Value 형태로 데이터를 저장하는 사용자의 기본 데이터베이스에 대한 인터페이스다. UserDefaults에 저장된 데이터는 앱이 종료되더라도 사라지지 않고, 영구적으로 저장된다. 단, UserDefaults의 데이터는 앱 Sandbox에 저장되므로 앱 자체가 삭제된다면 데이터도 같이 사라진다. 따라서 앱의 삭제 유무와 관계없이 데이터를 저장하기 위해서는 앱 내에서 백업/복구 기능을 지원하거나 KeyChain, iCloud 동기화 등의 기능을 추가하여 데이터를 유지시키..
Sandbox는 운영체제의 커널 수준에서 시행되는 접근 제어 기술로 외부로부터 들어온 프로그램이 보호된 영역에서 동작하도록 하여 시스템이 부정하게 동작되는 것을 막는 보안 형태이다. iOS의 각 앱은 설치될 때 앱마다 Sandbox라는 공간을 생성하여 내부에 앱 작동을 위해 필요한 데이터를 저장하고 , 서로 공유되지 않도록 한다. 외부의 공격으로 앱이 손상되어도 앱이 필요한 작업을 수행하는데 필요한 최소한의 권한으로 제한되어 있어 손상 범위를 줄여준다. 커널 : 메모리에 상주하는 운영체제의 한 부분으로 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 핵심 기능을 모아놓은 것을 말한다. Sandbox 처리되지 않은 앱에서는 ... 1) 해당 앱을 실행하는 사용자에 대한 모든 권한을 가지며, 사용자가 엑..
라이브러리 필요한 기능이 있는 코드의 묶음으로, 효율적인 코드 작성을 위해 필요한 곳에서 호출하여 사용할 수 있도록 Class나 Function으로 만들어져 있다. 프로그래밍의 전체적인 흐름 규칙을 따라야하는 프레임워크와 다르게 라이브러리는 개발자가 원할 때 필요에 따라 사용하고 직접 코드를 제어할 수 있다는 차이가 있다. 보통 Github에서 유용한 오픈소스 라이브러리들을 많이 찾을 수 있는데, 구글에 "github swift TextField(기능이 필요한 요소)" 키워드로 검색하면 좋은 자료들이 많이 나온다.! 유용하고, 안정적인 라이브러리를 찾는 방법 1) 대기업 앱의 "오픈소스 라이선스" 리스트를 참고한다. 굵직한(?) 대기업들의 앱에서는 설정창에서 "오픈소스 라이선스"라는곳을 확인할 수 있는데..