분류 전체보기 68

PNG와 JPEG의 차이점

PNG(Portable Network Graphics) PNG(Portable Network Graphics) 파일은 래스터 이미지 파일의 일종입니다. 투명 또는 반투명 배경의 그래픽을 처리할 수 있어 웹 디자이너에게 특히 인기 있는 파일 유형입니다. 이 파일 포맷은 특허가 없으므로 라이선스 없이도 이미지 편집 소프트웨어를 사용하여 파일을 열 수 있습니다. PNG 파일의 장단점 PNG 파일의 장점 - PNG 파일은 수백 개가 아닌 수백만 개의 색상 옵션을 처리하므로 GIF보다 훨씬 더 디테일한 이미지를 저장할 수 있습니다. - PNG는 개방형 포맷입니다. 라이선스 없이도 다양한 프로그램에서 열고 편집할 수 있습니다. - PNG 이미지는 압축해도 데이터가 손실되지 않으며, 저장과 전송이 매우 간단합니다...

Computer Science 2023.05.03

메모리 관리와 가상메모리

메모리 관리(memory management) - 컴퓨터 메모리에 적용된 리소스 관리의 일종 - 프로그램의 요청이 있을 때 메모리의 일부를 해당 프로그램에 할당하고, 더 이상 필요하지 않을 때는 다시 사용할 수 있도록 할당을 해제하는 것 - 가상 메모리 시스템은 프로세스가 사용하는 메모리 주소를 실제 물리 주소와 구분한다. 이로써 프로세스를 구분하고 디스크 스왑 처리를 사용하여 효과적으로 사용할 수 있는 RAM의 양을 늘릴 수 있게 된다. 가상 메모리 관리자의 품질은 전반적인 시스템 성능에 큰 영향을 미친다. - 쓰레기 수집(garbage collection)은 프로그램을 위한 컴퓨터 메모리 리소스를 자동으로 할당하고 할당을 해제한다. 프로그래밍 언어 수준에서 일반적으로 추가되어 있는 것이며, 수동 메모..

Computer Science 2023.05.03

[AutoLayout] Hugging과 Resistance (feat. intrinsic content size)

Q. iOS Application 개발 과정에서 intrinsic content size, content hugging, compression resistance의 정의와 관계, 사용 방법에 대해서 Swift 코드와 함께 설명해 줘 A. iOS 애플리케이션 개발에서 뷰의 크기와 레이아웃을 다루는 것은 중요한 부분입니다. 1. intrinsic content size intrinsic content size는 뷰의 내용물(content)의 크기에 대한 정보를 뜻합니다. 예를 들어, UILabel의 intrinsic content size는 텍스트의 길이와 폰트 크기에 따라 결정됩니다. 이때 뷰의 크기는 내용물(content)의 크기와 동일하게 설정됩니다. let label = UILabel() label...

iOS/UIKit 2023.04.24

[iOS / UIKit] @IBDesignable과 @IBInspectable

Q. iOS Application 개발 과정에서 @IBDesignable과 @IBInspectable에 대해서 설명해 줘 A. @IBDesignable과 @IBInspectable은 Interface Builder에서 뷰를 디자인하고 구성할 때 사용되는 어노테이션입니다. @IBDesignable은 커스텀 뷰 클래스에 적용되며, Interface Builder에서 해당 클래스를 선택하면 해당 뷰의 레이아웃과 디자인을 실시간으로 미리 볼 수 있게 해줍니다. 이를 위해 해서는 해당 뷰 클래스에 '@IBDesignable' 어노테이션을 추가하고, Interface Builder에서 해당 뷰를 사용할 때 미리보기를 위해 사용될 코드를 'prepareForInterfaceBuilder()' 메서드에 작성해야 합니다..

iOS/UIKit 2023.04.24

[Swift] Tail recursion(꼬리 재귀함수)

Q. Tail recursion이 무엇인지 설명해 줘 A. Tail recursion은 함수가 호출된 후, 함수가 실행을 끝내기 전에 마지막으로 다시 자신을 호출하는 재귀 함수의 형태를 말합니다. 이러한 재귀 함수에서는, 함수 호출이 함수 실행이 끝나기 전에 마지막으로 발생하기 때문에, 스택 메모리의 사용을 최적화할 수 있습니다. 일반적인 재귀 함수는 함수가 호출될 때마다 새로운 스택 프레임이 생성되어 스택 메모리에 저장됩니다. 이는 재귀 함수의 호출 수가 많아지면 스택 메모리를 많이 사용하게 되어 스택 오버플로우 에러가 발생할 가능성이 있습니다. 하지만 Tail recursion의 경우, 함수가 실행을 끝내기 전에 마지막으로 자기 자신을 호출하므로, 스택 프레임을 계속해서 생성하지 않아도 됩니다. 대신..

iOS/Common 2023.04.18

[Swift] Array에서 활용되는 함수들과 시간 복잡도

Q. Swift의 Array에서 활용되는 함수 전체에 대하여 함수 이름, 시간 복잡도, 사용 예시로 나눠서 설명해 줘 A. Swift의 Array에서 활용되는 함수들은 크게 배열에 요소를 추가/제거하는 함수, 배열을 조작/검색하는 함수, 배열의 요소를 정렬하는 함수, 배열의 메모리를 관리하는 함수로 구분할 수 있습니다. 이번에는 이러한 카테고리로 나누어서 각 함수의 이름, 시간 복잡도, 사용 예시를 설명해드리겠습니다. 배열에 요소를 추가/제거하는 함수 1. append(_:) - 배열의 맨 뒤에 요소를 추가합니다. - 시간 복잡도: O(1) var arr = [1, 2, 3] arr.append(4) // arr: [1, 2, 3, 4] 2. removeLast() - 배열의 맨 뒤에 있는 요소를 제거합..

iOS/Common 2023.04.17

[Swift] 네이티브의 WKWebView와 웹의 JavaScript 간 통신 방법

Q. iOS 애플리케이션 개발 과정에서 WKWebView를 사용할 때 JavaScript와 통신하는 방법에 대하여 Native는 Swift 코드로, Web은 JavaScript 코드로 설명해 줘 A. WKWebView를 사용하여 iOS 애플리케이션과 웹과 JavaScript를 통신하기 위해서는 'WKScriptMessageHandler' 프로토콜을 구현하고, 해당 핸들러를 사용하여 메시지를 보내고 받아야 합니다. 이를 설명하기 위해, 아래는 Swift 코드와 JavaScript 코드를 사용한 예시입니다. 1. 'WKScriptMessageHandler' 프로토콜을 채택하고 메시지를 처리하는 클래스를 생성합니다. Swift class MessageHandler: NSObject, WKScriptMessag..

iOS/Common 2023.04.14

[Objective-C] Objective-C의 block과 Swift의 closure

Q. Objective-C의 block과 Swift의 closure의 각 정의와 공통점, 그리고 차이점을 설명해 줘 A. Objective-C의 Block과 Swift의 Closure는 모두 코드 블록을 나타내는 기능입니다. Closure는 Swift에서 함수를 변수나 상수에 저장하거나 전달할 수 있는 기능입니다. Closure는 중괄호로 감싸진 코드 블록으로, 함수처럼 매개 변수와 반환 값이 있는 경우도 있고, 없는 경우도 있습니다. 예를 들어, 아래와 같은 Closure를 정의할 수 있습니다. let myClosure = { (a: Int, b: Int) -> Int in return a + b } 위 Closure는 Int 타입의 매개 변수 a와 b를 받아서, 두 매개 변수를 더한 값을 Int 타입..

iOS/Objective-C 2023.04.13

[Swift] 누군가 REST API를 묻거든 고개를 들어 어딜 봐야 하지..?

Q. REST API의 정의에 대해 설명해 줘 A. REST API란 Representational State Transfer(자원 상태 전달)의 약자로, 웹에서 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 방식을 말합니다. REST API는 HTTP 프로토콜을 기반으로 동작하며, 클라이언트와 서버 간의 통신을 위해 사용됩니다. REST API는 자원(Resource), 행위(Verb), 표현(Representation)으로 구성됩니다. 자원은 URI(Uniform Resource Identifier)로 구분되며, 자원을 조작하기 위한 행위는 HTTP메서드(GET, POST, PUT, DELETE 등)를 사용합니다. 표현은 클라이언트가 자원의 상태를 표현하는 방법을 의미합니다. 대부분의 경우 J..

iOS/Common 2023.04.12

[Swift] Deep link (Universal Links, Custom URL Scheme)

iOS에서 Deep link를 구현하는 방식은 Universal Links와 Custom URL Scheme 두 가지로 나눌 수 있습니다. 1. Universal Links Universal Links는 앱과 웹 사이트 간에 Deep link를 지원하는 Apple의 공식 기술입니다. Universal Links를 사용하면 앱이 설치되어 있지 않은 경우에도 사용자를 앱 스토어로 이동시키지 않고 직접 앱으로 연결할 수 있습니다. Universal Links를 구현하는 방법은 다음과 같습니다. - 앱과 웹 사이트에 도메인이 등록되어 있어야 합니다. - 앱에서 Associated Domains entitlements를 활성화하고, 앱과 연결할 도메인을 추가해야 합니다. - 웹 사이트에서도 Associated D..

iOS/Common 2023.04.12