분류 전체보기 68

[Objective-C] atomic vs nonatomic

Q. atomic과 nonatomic에 대해 설명해 줘 A. 'atomic'과 'nonatomic'은 Objective-C의 프로퍼티 속성 중 하나로, 멀티 스레드 환경에서 객체를 안전하게 접근할 수 있는 방법을 제공합니다. 'atomic'은 멀티 스레드 환경에서 객체에 접근할 때, 해당 객체에 대한 접근을 원자적으로 처리하는 것을 의미합니다. 다시 말해, 하나의 스레드에서 객체에 접근하는 도중 다른 스레드에서 접근하려고 하면, 해당 스레드를 기다리도록 합니다. 이렇게 함으로써 하나의 스레드에서 객체에 대한 작업을 완전히 마칠 때까지 다른 스레드가 접근할 수 없도록 보호됩니다. 반면에 'nonatomic'은 멀티 스레드 환경에서 원자적으로 처리하지 않고, 다른 스레드에서 객체에 접근할 수 있습니다. 'n..

iOS/Objective-C 2023.04.12

[Objective-C] Objective-C에서의 메모리 관리

Q. Objective-C로 iOS 애플리케이션을 개발하는 과정에서 ARC가 적용된 시기는 iOS 버전 몇 때부터인지 알려줘 A. Objective-C에서 ARC(자동 참조 계산)는 iOS 5 이상에서 지원됩니다. 이전 버전의 iOS에서는 수동으로 메모리 관리를 해야 했습니다. 따라서 iOS 5 이전 버전에서 개발할 경우에는 수동으로 메모리를 관리해야 합니다. Q. 수동으로 메모리를 관리하는 Objective-C 코드를 보여줘 A. Objective-C에서 수동으로 메모리를 관리하기 위해서는 메모리를 할당할 때 'alloc' 메소드를 사용하고, 메모리를 해제할 때 'release' 메소드를 호출해야 합니다. 또한, 객체를 참조할 때는 'retain' 메소드를 사용해서 참조 횟수를 증가시키고, 참조를 해제..

iOS/Objective-C 2023.04.12

[Swift] SOLID 원칙에 관하여

Q. Swift 코드를 예시로 SOLID 원칙에 대해 설명해 줘 A. 좋습니다! SOLID 원칙은 소프트웨어 개발에서 유지보수, 확장성, 유연성 등의 측면에서 코드의 품질을 높이기 위해 사용되는 원칙들의 집합입니다. Swift 언어를 예시로 설명하면서 SOLID 원칙을 적용하는 방법을 알아보겠습니다. 1. Single Responsibility Principle (SRP) - SRP는 하나의 클래스는 하나의 책임만을 가져야 한다는 원칙입니다. - 예를 들어, ViewController가 UI 관리와 데이터 로딩을 모두 담당하면 SRP를 위반하는 것입니다. - 따라서, ViewController를 화면 표시를 담당하는 View와 데이터 로딩을 담당하는 ViewModel로 나누어서 구현하는 것이 좋습니다. ..

iOS/Common 2023.04.10

[Swift] 의존성 주입에 관하여(feat. Swinject, Dip, Typhoon)

Q. Swift로 iOS 애플리케이션을 개발하는 과정에서 의존성 주입의 정의와 방법, 그리고 각 방법의 장단점에 대해 설명해 줘 A. 의존성 주입(Dependency Injection)은 객체 지향 프로그래밍(OOP)에서 사용되는 디자인 패턴 중 하나로, 클래스나 모듈 간의 의존성을 줄이고 유연성을 높이기 위해 사용됩니다. 의존성이란 객체 간의 상호작용을 의미하며, 한 객체가 다른 객체를 사용할 때 의존성이 생깁니다. iOS 애플리케이션을 개발할 때도 여러 클래스나 모듈 간에 의존성이 생기는데, 이를 관리하기 위해 의존성 주입을 사용할 수 있습니다. 이를 통해 의존성을 외부에서 주입하여 클래스나 모듈을 유연하게 만들 수 있으며, 코드의 재사용성을 높일 수 있습니다. 의존성 주입 방법에는 크게 세 가지가 ..

iOS/Common 2023.04.10

[Swift] 함수형 프로그래밍(feat. 순수 함수)

Q. 함수형 프로그래밍의 정의를 설명해 줘 A. 함수형 프로그래밍은 계산을 수학적 함수의 조합으로 생각하고, 이러한 함수들의 조합으로 프로그램을 작성하는 프로그래밍 패러다임입니다. 이를 통해 부작용을 최소화하고, 상태 변화를 제어하여 프로그램의 안정성과 가독성을 높일 수 있습니다. 함수형 프로그래밍에서는 함수가 순수 함수여야 합니다. 즉, 함수는 입력값에 대해 항상 동일한 결과값을 반환하며, 함수 외부의 상태를 변경하지 않아야 합니다. 이를 통해 함수 호출이 항상 예측 가능하게 되고, 코드를 이해하고 디버깅하기 쉬워집니다. 또한 함수형 프로그래밍에서는 불변성을 중요시합니다. 즉, 한번 정의된 값은 변경되지 않아야 합니다. 이를 통해 병렬 처리를 용이하게 만들 수 있으며, 불필요한 상태 변경으로 인한 버그..

iOS/Common 2023.04.10

[Swift] struct, class, enum

Q. Swift에서 struct, class, enum 각각의 특징과 차이점을 비교해서 설명해 줘 A. Swift에서 sturct, class, enum은 모두 데이터 모델링을 위한 구조체입니다. 각각의 구조체는 고유한 특징과 용도가 있습니다. Struct(구조체) - 값 타입(Value Type) - 생성자(constructor) 필요 없음 - 상속 불가능 - 구조체 인스턴스를 상수로 선언하면 변경 불가능 - 메모리 할당과 해제가 빠름 - 프로퍼티는 기본적으로 모든 인스턴스에 대해 초기화되어야 함 Class(클래스) - 참조 타입(Reference Type) - 생성자 필요 - 상속 가능 - 클래스 인스턴스를 상수로 선언해도 내부 프로퍼티는 변경 가능 - 메모리 할당과 해제가 느림 - 프로퍼티는 초기화..

iOS/Common 2023.04.10