- Combine(1)-WhatisCombine(publish&subscirbe)2료일콤바인? 왜 사용하는데? 뭘 해결해줄 수 있는데?비동기처리에 X비동기코드의 선언적 접근 O코드 간소화 O⇒ 이 두가지를 위해 사용한다. 해결할 문제가 없다면 콤바인을 쓰지 마라!! 필요할때만 사용해라~~!!Publisher들은 변경될수있는애를 놓고 Subscriber는 그걸 받는놈.중첩된 클로저같은 번거로운애들을 코드 쉽게 읽고 관리할수 있도록 도와주는 거! 라고 애플에서 만든것. 코드를 쉽게 읽고유지관리할수 있따!!RXswift제대로 아직 공부못햇지만 combine으로 할수 있다. 더 좋음 왜? 퍼스트 파티라서.시간이 지남에 따라 값처리를 위해 통합된 선언적 API. 핵심요소 5가지프로토콜Publisher, Subscriber, Subject, Scheduler, CancellablePublisher ..
- 2023-07-09 16:41:41
- lazy var2료일Lazy var 그게 몬데? 그냥 private var 이나 쓰면 되지 굳이 이런걸 왜써? 이렇게 생각하면 안댐 직독직해 게으른 변수는 매우 swift에서 메모리적으로 효율적이게 도와준다. 처음 사용되기전까지 연산이 되지 않기에!! 그럼 두번째부턴? 뭐가효율적? 이 그림하나로 lazy var를 어떻게 쓰는지는 완벽하게 설명이된다. computed Property랑 뭐가 다를까? 바로 처음 사용될때 메모리에 올리고 그 후부터는 그냥 메모리에 올라온값사용! 연산프로퍼티는 사용할때마다 연산을 한다 장점 - 뷰 로드될때 모든 인스턴스를 올린다면 메모리 과부하를 막을수 있다 와 그렇다면? 그냥 모든 규모 큰 변수들을 lazy 처리하게 된다면 앱의 안정성과 효율성은 짱짱 좋아지는 거 아냐? 당연히 ㄴㄴ~! - 여러..
- 2023-07-07 10:43:05
- 디스패치 그룹2료일TASK를 그룹으로 짓고 그룹으로 묶인 작업이 끝나는 시점을 알고 싶다!그룹1의 작업이 여러쓰레드에서 작업을 해도 묶여있고 마지막 task가 끝나는 시점을 알 수 있다.ex) 런치스크린 후 앱첫화면 나오는데 메인에서 이미지를 다 다운받지 못한다면? 에러처럼 보이게 된다. 그러면 마지막꺼까지 다 받고 앱을 그려주자!let group1 = DispatchGroup()DispatchQueue.global(qos:).async(group: group1){}group1.notify(queue.DispatchQueue.main){[weak self] in self.textLabel.text = "끝"}queue로 보낼때 어떤 그룹으로 보낼지 정해주면 된다. 모든작업이 끝날때까지 현재 대기열 블락하는 동기적 방..
- 2023-07-02 12:54:47
- GCD queue.2료일아이폰에는 여러개의 쓰레드가 있다. 왜 버벅이냐? 일하는 녀석이 여러개가 있어도 한놈한테 야 너 다해! 이러면 아 할게 너무많아....하면서 과도한 작업이 몰려 버벅인다.특히나 메인쓰레드는 UI 업데이트와 사용자 이벤트 처리 등의 핵심 작업 수행하는 쓰레드로 블락되면 사용자경험이 나빠진다.=> 다른 쓰레드로 작업을 분산하면 되겟다~ 매우 간단!(작업 분산처리)그러면 어떻게 분산할껀데 ? iOS에서는 Task를 대기행렬(큐)에만 보내면 된다. 그러면 알아서 OS가 한다.그러면 작업을 큐에만 보내면 되겟네? 내가 할 것은 오직 큐에만 보내자!!! 직접적으로 쓰레드 관리 X, 큐에 넣으면 알아서 작업을 분산처리. 쓰레드보다 더 높은 차원에서 일을 한다고 보면됨. 비동기적 대기행렬(큐)에는 두가지 있다. GC..
- 2023-07-02 01:45:22
- Actor🕴🏻2료일- What is Data Race?두 스레드가 동기화 없이 동일한 객체에 접근하려 할때 ⇒ Data race이벤트 순서가 프로그램의 정확성에 영향을 미칠때 ⇒ Race Conditionex) Thread별 연산의 실행 순서에 따라 값이 달라질 수 있다! 고로 Data Race≠Race conditionclass MyDataManager { static let instance = MyDataManager() private init() {} var data: [String] = [] func getRandomData() -> String? { self.data.append(UUID().uuidString) print(Thread.current) r..
- 2023-06-29 13:58:39
- Frame vs Bounds2료일깃허브에 돌아다니는 IOS 관련 면접 질문들을 보면 하나씩 꼭 있는 단골질문!! frame과 bounds? 그게 뭔데? 그리고 뭐가 다른데???물론 나도 다르다는 것은 안다. 하지만 설명하라고 질문이 들어왔을때... 어??? 뭐지? 또다시 머리 백지상태나와 같은 피해자(?)가 없도록 아주 아주 자세하고 쉽게 정리를 하려한다. 좋게 읽었다면 그것이 땡큐입니다🥰Frame! superview 좌표계에서 뷰의 위치와 크기를 나타낸다.UIView의 위치(superview), 크기(view영역을 감싸는 사각형 크기)를 나타낼때 사용.여기서 조심해야하는것이 최상위에 있는 뷰가 아닌 superview! 즉 바로 한단계 위 뷰를 기준인것이다.origin(x,y) : superview의 원점을 (0,0)으로 놓고 얼마나..
- 2023-06-04 22:05:26
- Socket 통신 개념+구현까지(서버는 nodejs)2료일소켓이 뭐야?소켓(Socket)은 네트워크 통신에서 프로세스 간의 통신을 가능하게 하는 인터페이스입니다. 소켓은 네트워크 소프트웨어 개발에 사용되며, 클라이언트와 서버 간의 데이터 교환을 관리합니다.소켓은 일종의 추상화된 개념으로, 소프트웨어적으로 구현된 통신 엔드포인트입니다. 소켓은 프로그램이 네트워크를 통해 데이터를 송수신할 수 있도록 인터페이스를 제공합니다. 소켓은 네트워크 계층의 상위 계층인 전송 계층에서 사용됩니다.라고 GPT의 말씀socket에는 IP주소와 Port번호가 있다.1. TCP : IP와 함께 사용하는 프로토콜IP가 데이터 배달을 하고 TCP는 패킷을 추적하고 관리.데이터를 보낼때 한번에 보내는 것이 아니라 이것을 토막내서 보내는데 이 토막의 단위를 패킷이라고 한다.데이터가 제대로..
- 2023-06-03 17:41:23
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)