본문 바로가기

Swift

(132)
[예약] Responder Chain 공부 https://developer.apple.com/documentation/uikit/touches_presses_and_gestures/using_responders_and_the_responder_chain_to_handle_events Apple Developer Documentation developer.apple.com
[Swift] lazy var로 초기화했을때의 장단점? lazy로 선언하지않고 바로 초기화해주는 인스턴스가 우리같은 프로젝트에서 조금만 사용된다면 상관이 없지만 이게 1000개 이상이되면 성능과 메모리에 영향을 받는다. 그렇기 때문에 공식문서에 내용대로 가능하면 lazy로 초기화해주는게 좋다. ? [lazy의 장점] - lazy 프로퍼티와 관련된 클로저는 해당 프로퍼티를 읽을때만 실행된다. 따라서 어떤 이유로 해당 프로퍼티가 사용되지않는 경우 불필요한 할당 및 계산을 피할 수 있따. - 저장 프로퍼티값으로 lazy프로퍼티를 채울 수 있음 lazy var label: UILabel = { let label = UILabel() return label }() - self를 클로저내부에 사용할 수 있다. 이는 어떤 순환참조을 일으키 않는다. 이유는 {}()가 @n..
[ing] Closure 값 캡쳐를 사용하는 이유(ex async와 sync) 주로 고차함수나 비동기작업하는데 클로저를 많이 사용하는데 클로저를 통해 비동기 콜백을 작성할때 현재 상태를 미리획득해두지않으면 실제로 클로저의 기능을 실행하는 순간에는 변수가 nil인상태이거나 메모리에 존재하지않는 경우가 발생할 수 있다. 이때. 필요한 것이바로 클로저의 값 캡쳐기능이다. 우리가 구조체 메서드내 dispatchQueue.global().sync메서드내에서 다른 타입의 변수를 호출하면 에러가 발생하지않음 왜? main thread가 진행될동안 다른 thread에 rock이 걸리기때문에 현재 클로저내에서 값을 바꾸는 것외에는 다른스레드를 통해 바뀔일이 없다. 그런데 async를 선언하면 이와같은에러메세지가 발생한다. “Escaping closure captures mutating ‘self’..
[iOS] GCD 심화 개념 톺아보기 # Qos(Quality of Service) 서비스에 품질 ?? 우선순위 ??? Qos를 우선순위로 번역하다보니 그 의미를 오해할 수 있는데 여기서 말하는 우선순위란 무엇인가? 무엇에 더 품질을 신경쓸까와 같은맥락이다. 예를들어 DispatchQueue와 Operation Queue를 공부한다고 했을때 디스패치큐가 현재는 더 중요하다고 생각해 7:3비율로 공부를 하는것처럼 에너지를 쏟아 품질을 높이는것 # 에너지를 더많이 쏟는다는건 무슨말일까 ?? 더 많은 스레드를 할당한다는 뜻이다. # DispatchQoS는 무슨 타입인가? enum 열거형 타입으로 설계되었고 총 6개의 클래스가 있으며, 4개의 쥬요 유형과 다른 2개의 특수유형으로 구분할 수 있다. userInteractive, userInitiat..
[CS] HTTP와 TCP/IP의 개념 및 차이점(feat. method, URL/URI) # HTTP(HyperText Transfer Protocol) 웹 상에서 주고받을 수 있는 전세계적으로 협약된 프로토콜임 HTML - 웹페이지를 만드는언어 URL, URI - 원하는 웹페이지를 방문할 수 있도록 도와주는 주소체계인 Web browser, Web server - 웹페이지를 주고받는 소프트체계인 Web browser, Web server - 이 둘이 통신하는 방법인 HTTP 손님이 요청을한다 to 가게한테 for 초코파이를 가게를 응답 한다. to 손님에게 for 초코파이를 여기서의 주고받는 메세지는 초코파이인데 이걸 http라고 부른다. 즉, 요청과 응답을 위한 메세지로 구분을 할 수 있다. # 추상적인 이론 말고 눈으로 확인해보자 웹 페이지에 접속 -> 웹화면에서 마우스 우클릭 -> 검..
[Swift] 메서드명을 지을때 get을 지향하라는 말은 출처가 어딜까 ? https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingMethods.html#//apple_ref/doc/uid/20001282-1001751-BCIJHEDH Naming Methods Naming Methods Methods are perhaps the most common element of your programming interface, so you should take particular care in how you name them. This section discusses the following aspects of method naming: General..
[iOS]의존성 관리 도구 종류 및 장단점!(feat. 오픈소스) # 오픈소스 소스코드를 공개해 누구나 제한없이 코드를 볼 수 있는것 타입들을 다 만들어서 사용하면 시간이 오래걸리니깐 이미 만들어져있는 코드들을 사용하는 것이다. 오픈소스 제작의 의미 코드에 신경을쓰게되며 코드를 제공하고 배울 수 있는 기회가될 수 있다. 의존성 관리도구란? Cocoa, CocoaTouch 는 애플에서 제공하는 앱 개발환경을 의미 macOS에서는 Cocoa, iOS에서는 Cocoa Touch라고 부른다. 의존성관리도구를 사용하는것은 필수는 아니나 라이브러리 업데이트가 올라오면 교체해줘야하는데 이걸 일일이 기존 라이브러리를 삭제하고 삽입시키면 휴먼에러도 발생할 수 있음 => 이를 명령어 한줄 혹은 클릭 몇번으로 해결하면 시간절약과 안정성까지 보장받을 수 있다. 오픈소스 작성시 주의할점 MI..
[Swift] Protocol Oriented Programming Protocol oriented Programming 스위프트의 핵심 패러다임 중 하나 예전에 옵젝씨에서 단지기능의 청사진 역할 주로 Delegate, DataSource 현재 protocol extension이 가능해졌다. 특정타입이 할일을 명시해주는 동시에 역할을 해주는 것까지 가능해짐 // MARK: 프로토콜 기본구현 protocol LayoutDrawable { func drawsomeLayout() } class MyView: UIVuew, LayoutDrawable { } extension LayoutDrawable { func drawsomeLayout() { //... } } 이게무슨장점이있는지 ?? 저 기본구현을 어떤 클래스나 구조체 열거형이라도 프로토콜을 명시해주면 프로토콜에 있던 기능..
[iOS] 동시성 프로그래밍 햇갈리는 개념 잡기(feat. 야곰닷넷) 0️⃣ core와 thread(솦트웨어에서의)는 각각 무엇을 의미하는지 설명해보세요 core는 cpu에서 일처리하는 개체입니다. 코어는 한번에 한가지일만 처리가 가능하다는 특징을 가지고있습니다. thread는 프로세스(프로그램) 내부에서 작업 단위가 되는 가상 스레드이며 작업을 처리하는 개체입니다. 1️⃣ sync와 async의 차이는 무엇인가요 ? sync는 동기고 async는 비동기 방식이며 병프와 동프와는 전혀다른 맥락이다. 둘의 차이점은 동기는 작업을 끝날때까지 기다리는 것이고 비동기는 기다리지 않고 다음 블럭을 바로 실행시키는 코드이다. 2️⃣ async(비동기)와 concurrent(동시성)는 구분되는 개념이라고 했습니다. 각각을 설명해보세요. async는 기다리지 않고 다음 코드 작업을 수행..
[CS] 32bit 버전, 64bit 버전, ARM 버전 개념 및 차이점 파악(feat. ISA) # ISA란? 한글을 영국인한테는 영어로 일본인한테는 일본어로 번역하듯 프로그램코드도 CPU1에 맞게 번역하고 CPU2에 맞게 번역해야 코드가 돌아감 이런 CPU언어는 ISA라고부르는데 프로그래밍언어랑은 다른 개념이다. 인간이 이해하기난해함… 그래서 C, Java, Python같은 기계어같은게 컴파일되야 CPU에서 해당 프로그래밍 돌아가는것 특정 isa를 겨냥해서 만든 프로그램을 다른 CPU인 ISA2로번역하려면 정말 어렵다. 마치 영욱어로변역한걸 일본어로 번역하는 소모적인 정도와 같이… # CPU 표준설계 방식을 아키텍쳐라 함 32비트 시스템의 중 가장 대중적인 아키텍처가 X86이고 64비트 시스템 중 가장 대중적인 아키텍처가 X64이다. 컴퓨터에서 사용하는 가장 작은 단위 0과 1 이진법으로 동작함 ..