iOS랑 친해지기 16

[iOS] BLE / CoreBluetooth 정리 (Swift)

BLE란??- Bluetooth Low Energy- 전력 소비를 보완하는 저전력 블루투스- 통신 속도보다는 전력 소모를 줄이는 것에 초점을 맞춤- Bluetooth4.0에 특화된 기술임  BLE를 이용한 디바이스 종류 1. Bluetooth Smart (BLE, 단일 모드)- 단일 모드, 듀얼 모드 디바이스들과 통신 가능- BR/EDR만 지원하는 디바이스는 불가- 심박수 모니터  등* BR/EDR(기존 블루투스) - 블루투스 1.0부터의 무선 표준 규격   2. Bluetooth Smart Ready(BR/EDR/BLE, 듀얼 모드)- BR/EDR만 지원하는 디바이스도 통신 가능- 블루투스와 단일모드 디바이스들로부터 데이터를 받아 유용한 정보로 변환 - 스마트폰, PC, TV 등 BLE 방향에 따른 ..

iOS랑 친해지기 2023.12.28

[iOS] CompletionHandler (비동기처리)

직역 The completion handler to execute after the activity view controller is dismissed. 액태비티 뷰 컨트롤러가 해제된 후 실행할 완료 핸들러 - 비동기(작업이 순차적으로 실행되지 않고 별도의 스레드나 큐에서 실행되는) 작업이 완료되었을때 실행되는 클로저 - 대표적으로 네트워크 요청의 응답 처리, 파일 다운로드 및 데이터 처리 등이 있다. - 이 프로퍼티는 UIActivityViewControllerCompletionHandler 타입의 클로저를 저장한다. - 클로저는 nullable로 설정되어 있어 값을 가질 수도있고, nil일 수도 있다. - nonatomic: 멀티 스레드 환경에서 해당 프로퍼티에 동시에 접근하지 않는다. - copy:..

iOS랑 친해지기 2023.08.31

[iOS] 백그라운드일때 이벤트 발생 (NotificationCenter)

- 등록된 옵저버에게 동시에 정보를 브로드 캐스트 할 수 있는 클래스 - NotificationCenter에 등록된 이벤트가 발생하면 이벤트에 대한 행동을 취함 - 백그라운드, 비동기 작업의 결과 등 현재 작업의 흐름과 다른 흐름의 작업으로부터 이벤트를 받을떄 사용함 옵저버 추가 addObserver(observer:selector:name:object:) - observer: 옵저버가 될 객체 - selector: 이벤트가 발생했을때 호출될 메서드 - name: 등록하려는 이벤트 이름 (NSNotification.Name 타입) - objcet: 발송자가 옵저버에게 보내려고 하는 객체 - NSNotification.Name: 이벤트의 이름을 나타내는 타입. 주로 문자열 상수로 사용되며, 이벤트 식별에 ..

iOS랑 친해지기 2023.08.15

[iOS] Frame 과 Bounds (feat.CGPoint, CGSize, CGRect)

UI위치를 구성하다 갑자기 헷갈려서 복습겸 frame과 bounds에 대하여 정리해보았다. Frame bounds는 둘다 CGRect형이다. CGRect는 origin(x,y좌표) 와 size(width,height)로 구성되어 있다. x,y좌표인 CGPoint 형태, size 크기는 width,height값을 구하는 CGSize형태 CGPoint - 2차원 좌표계에서 점을 구하는 구조체 CGSize - 너비 및 높이 값을 구하는 구조체 CGRect 사각형의 위치와 크기를 포함하는 구조체 Frame과 Bounds는 UIView의 instance property이고 CGRect형이라 x,y,width,height을 가짐 frame 한단계 상위 뷰에서의 위치에서의 사각형 bounds 자신만의 좌표시스템에서의..

iOS랑 친해지기 2023.08.03

[iOS] GCD와 동기,비동기 처리

Words API를 이용해 랜덤하게 단어들을 불러와 그 중 한가지 단어를 다시 Naver 번역,이미지 API를 이용해 단어의 정의와 사진을 보여주는 앱을 설계하려고 했다. 하지만 번역과 이미지 데이터를 파싱해 0번째 인덱스 있는 데이터를 UI에 보여주도록 하였지만 out of range에러가 생성되었다. 이유는 Label과 Image만 mainQueue에서 비동기로 처리하였기 떄문이다. 단어,번역,이미지 데이터를 파싱을 하는 과정에서 배열에 데이터가 담겨져 있지 않은데 Label과 Image의 값을 0번째 인덱스에서 가져오려 했기 때문이다. 그래서 방법을 찾아보다가 GCD에 대하여 찾아 볼 수 있었다. 먼저 GCD를 알기 전에 프로그램,프로세스,쓰레드의 개념을 알아야 했다. 프로그램 - 작업을 실행할 수..

iOS랑 친해지기 2023.08.02

[iOS] JSON 배열의 인덱스마다 구조가 다른 데이터 파싱 (옵셔널)

Word of the day API에서 랜덤한 문자를 받고 싶었다. https://rapidapi.com/jayantur13/api/word-of-the-day2 Word of the day API Documentation (jayantur13) | RapidAPI rapidapi.com Postman으로 Get 형식으로 데이터를 받아왔을 경우 JSON형태가 다음과 같았다. [ ] 문자로 시작해 배열로 확인하였고 첫번째인덱스에만 info라는 이름을 가지는 객체가 있었고, 나머지 인덱스에는 source,date,word,type,mean라는 이름을 가진 객체가 있었다. [ { "info": "Note: This API doesn't gaurantee latest data by date." }, { "sou..

iOS랑 친해지기 2023.08.02

[iOS] pod init 실패 (XCode 업데이트하고 Podfile 안깔릴때 응급치료법 Search for existing GitHub issues similar to yours)

Xcode 업데이트 후 Pod init으로 Podfile 을 설치하려하는데 다음과 같이 오류남 오류내용 ――― MARKDOWN TEMPLATE ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ### Command ``` /Users/duck/.rbenv/versions/3.1.1/bin/pod init ``` ### Report * What did you do? * What did you expect to happen? * What happened instead? ### Stack ``` CocoaPods : 1.11.3 Ruby : ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x86_64-darwin21..

iOS랑 친해지기 2022.10.27

[iOS] HTTP/ URLSession / URLSessionConfiguration/ URLSessionTask

우리는 웹 통신을 할때 엄격한 규약(프로토콜)을 준수해야한다. HTTP(Hyper Text Transfer Protocol) - HyperText를 전송하기 위한 프로토콜 - Html 문서를 주고받는데 사용하는 통신 프로토콜 - 요청request , 응답response로 이루어져 있음 - 서버는 클라이언트가 요청하는 정보를 전송하고 곧바로 연결을 종료시킴 - 서버에 요청을 보내고 서버로부터 필요한 파일을 받으면 연결이 종료됨 - 계속 연결되지 않는다는게 HTTP의 특징 - HTTP통신은 요청을 보내고 응답을 받을때 패킷에 넣어보냄 - 패킷은 크게 해더와 바디로 나뉘는데 헤더에서는 보내고 받는 사람의 주소, 패킷의 생명시간 - 바디에는 우리가 전하고자하는 실제 내용들이 들어가있음 HTTP 메서드 클라이언트..

iOS랑 친해지기 2022.10.25

[iOS] 알람어플 만들기

datePicker = 사용자가 타이머 시간을 선택할 수 있도록함 timerLabel = 시간을 나타내는 Label progressView = 시간이 지날수록 1 ~ 0에 가까워짐 toggleButton = 시작을 누르면 타이머시간이 지나고 일시정지로 바뀜 dataPicker는 사라지고 Label과 progressView가 나타남 cancelButton = 취소 버튼을 누르면 Label과 progressView가 사라지고 dataPicker가 다시 생기고 Label과 progressView가 사라짐 👨‍💻만들어보면서 배운점 DispatchSourceTimer - 타이머를 기반으로 이벤트 핸들러 블록을 제출하는 디스패치 소스 - GCD API가 제공하는 프로토콜 - 1초에 한번씩 핸들러를 호출시켜서 데이트..

iOS랑 친해지기 2022.10.24