본문 바로가기

728x90
반응형
SMALL

iOS

(64)
싱글톤 패턴, 옵저버 패턴, 코디네이터 패턴 싱글톤 패턴 싱글톤 패턴은 객체를 단 한 번만 생성하고, 이후에는 생성된 객체를 계속해서 사용하는 디자인 패턴입니다. 이 패턴을 사용하면 전역 변수를 사용하지 않아도, 전역 변수와 같은 기능을 수행할 수 있습니다. Swift에서도 싱글톤 패턴을 적용하여 객체를 생성하고, 사용할 수 있습니다. 이 디자인 패턴을 적용하면 객체를 여러 번 생성하는 것을 방지하여 메모리 사용량을 줄일 수 있습니다. 싱글톤 패턴의 장단점은 다음과 같습니다. 장점: 객체 생성 횟수를 줄여 메모리 사용량을 최적화할 수 있습니다. 전역 변수를 사용하지 않아도 객체를 공유할 수 있습니다. 단점: 멀티스레드 환경에서 안전하지 않을 수 있습니다. 디버깅이 어려울 수 있습니다. 다음은 Swift에서 싱글톤 패턴을 적용한 예제 코드입니다. c..
REST API REST API - https://www.ibm.com/topics/rest-apis REST API는 REST(Representational State Transfer) 아키텍처 스타일의 설계 원칙을 따르는 *API로, 응용 프로그램이나 기기가 서로 연결되어 통신할 수 있는 규칙의 집합입니다. REST API는 상호작용하는 클라이언트와 서버 구성 요소 사이에 관련된 각 리소스를 식별하는 데에 리소스 식별자를 사용합니다.RESTful API라고도 불리며, 컴퓨터 과학자 Roy Fielding이 만들었습니다. REST API를 활용하면 RESTful 웹 서비스와 상호작용할 수 있습니다. *** API *** API는 "Application Programming Interface"의 약어로, 프로그램 간 상..
Content hugging과 Compression resistance Content hugging과 Compression resistance Content hugging과 Compression resistance는 Auto Layout에서 사용되는 용어로, 뷰의 크기를 결정하는 데 영향을 미칩니다. Content hugging은 뷰가 자신의 컨텐츠를 얼마나 감싸고 있는지를 나타내는 값입니다. 이 값이 높을수록 뷰는 컨텐츠를 더 감싸려고 하며, 뷰의 크기가 컨텐츠 크기에 가까워집니다. 반면, 이 값이 낮을수록 뷰는 크기를 더 늘리려고 하며, 뷰의 크기가 컨텐츠 크기보다 크게 됩니다. Compression resistance는 뷰가 자신의 컨텐츠를 얼마나 압축하고 있는지를 나타내는 값입니다. 이 값이 높을수록 뷰는 컨텐츠를 덜 압축하려고 하며, 뷰의 크기가 컨텐츠 크기에 가까..
intrinsicContentSize intrinsicContentSize는 UIView나 UIControl과 같은 뷰 계층 구조에서, 뷰의 내용(content)에 맞추어 뷰가 적절한 크기를 계산하는데 사용되는 속성(property)입니다. 예를 들어, UILabel은 텍스트의 길이와 폰트, 줄 간격 등에 따라 높이와 너비가 결정됩니다. 이때, UILabel은 내용에 맞는 적절한 크기를 계산하기 위해 intrinsicContentSize를 사용합니다. intrinsicContentSize는 UIView의 크기가 자동으로 결정될 때 사용됩니다. 예를 들어, 스토리보드에서 뷰의 크기를 지정하지 않고, 내용에 맞게 크기를 자동으로 조정하고 싶을 때 intrinsicContentSize를 구현해야 합니다. 또한, Auto Layout을 사용하는 경..
(iOS) Chat GPT 사용해보기 먼저 api key 를 만들어야합니다요. https://platform.openai.com/ 여기서 로그인하고 아주 쉽게 만들 수 있습니다. 그리고 Alamofire가 필요한데!! *** Alamofire란? *** Swift로 작성된 HTTP 클라이언트 라이브러리로, API 호출 및 JSON 파싱 등의 작업을 쉽게 수행할 수 있도록 지원합니다. 따라서, iOS 프로젝트에서 OpenAI API를 사용하려면, Alamofire 라이브러리를 사용하여 API 호출 및 JSON 파싱을 구현하면 됩니다. Podfile에는 다음과 같이 Alamofire를 추가할 수 있습니다. 그리고 Pod install 이후 확장자 .xcodeproj 이 아니라 .xcworkspace로 프로젝트를 열어서 API를 핸들링 할 소스 ..
컬렉션 뷰에서 데이터를 사용할 때 struct?, class? 컬렉션 뷰에서 데이터를 사용할 때는 보통 클래스를 사용하는 것이 좋습니다. 이는 클래스가 참조 타입이기 때문에, 여러 곳에서 해당 데이터에 대한 참조를 공유할 수 있기 때문입니다. 반면에, 스트럭트는 값 타입이기 때문에 인스턴스를 복사하면 해당 데이터를 복사하게 됩니다. 그렇기 때문에 컬렉션 뷰에서 데이터를 사용할 때 스트럭트를 사용하면, 데이터를 복사하는 과정이 불필요하게 반복될 수 있습니다. 하지만, 데이터의 크기가 작고 빈번하게 생성되고 삭제되는 경우에는 스트럭트를 사용할 수도 있습니다. 이러한 경우 스트럭트를 사용하면 인스턴스 생성 및 소멸에 대한 부담을 줄일 수 있습니다. Why? 클래스의 객체 생성 및 소멸과 관련된 오버헤드가 있기 때문입니다. 클래스는 객체를 생성하면 객체를 위한 메모리를 동..
Static dispatch, Dynamic dispatch Static dispatch와 Dynamic dispatch는 Swift에서 함수 호출 시 메소드가 결정되는 방식을 설명하는 용어입니다. Static dispatch 컴파일 시간에 메소드 호출을 처리하는 방식입니다. 컴파일러는 함수 호출이 해당하는 메소드를 직접 참조하여 호출을 처리합니다. 이 방식은 컴파일 시간에 메소드 호출 결정이 이루어지기 때문에 실행 시간에 오버헤드가 거의 발생하지 않습니다. 그러나 이 방식은 함수 호출 시 메소드가 무조건 호출되는 것이기 때문에 동적으로 호출될 수 없으며, 다형성(polymorphism)을 지원하지 않습니다. class Animal { func makeSound() -> String { return "" } } class Dog: Animal { override ..
iOS APP 화면 구성 iOS 앱에서 화면을 구성하는 방법은 크게 두 가지로 나뉩니다. 코드로 구현하기 iOS 앱에서 화면을 구성하는 가장 기본적인 방법은 코드를 이용해 직접 구현하는 것입니다. 이 방법은 프로그래머가 직접 UI 요소들을 생성하고 배치하는 방식으로, 매우 세밀한 제어가 가능합니다. iOS에서 UI 요소들은 UIKit 프레임워크에서 제공되며, 이를 이용해 버튼, 레이블, 이미지뷰, 슬라이더 등 다양한 UI 요소를 만들 수 있습니다. 인터페이스 빌더로 구현하기 인터페이스 빌더(Interface Builder)는 Xcode에서 제공하는 GUI 편집 도구로, 시각적인 방법으로 iOS 앱의 UI를 구성할 수 있게 해줍니다. 인터페이스 빌더를 이용하면 코드로 UI를 구현하는 방식보다 간편하고 빠르게 UI를 만들 수 있습니..

728x90
반응형
LIST