본문 바로가기

Swift

(53)
Framework (Dynamic VS Static) Framework / Library / Module 프로젝트를 만들 때 하나부터 열까지 모두 손수 만들지 않는다. 나 그러면 개발자 안 할 것임 은 김소깡 ㅎㅇㅌ ! 그래서 보통 프레임워크 / 라이브러리 / 모듈을 사용하는데 이런 것들을 왜 사용할까? 분업, 협업에 용이 빠른 개발 및 효율적인 개발 가능 재사용성 코드 관련(비슷한) 코드를 그룹화(모듈화)하고 코드에 대한 액세스를 제한(캡슐화)하는 메커니즘을 제공 프레임워크는 Dynamic shared Library, Nib 파일, 이미지 파일, 다국어 문자열, 헤더 파일, 레퍼런스 문서와 같이 공유 리소스를 패키지로 캡슐화하는 계층 구조 파일 디렉토리를 말한다. 구조를 보게 되면 기본적으로 아래와 같은 형태를 갖고 있다. ├── Resources -> ..
Access Control (feat. Framework) 접근제어가 왜 필요하고 왜 중요한지 프레임워크를 만들어보면서 알아보자. Framework Framework가 뭔데? iOS 앱을 개발할 때 외부 라이브러리를 import 해서 사용한다. 이런 식의 외부 라이브러리로 많이 사용하는 형태가 프레임워크이다. 프레임워크는 이미지, nib 파일, 다국어 문구, 문서, 공유 라이브러리, 헤더 파일 등을 포함하는 디렉토리이다. 프레임워크를 사용하는 이유는 코드와 리소스의 재사용성에 있다. static library의 경우는 코드만 공유하지만 프레임워크는 이미지 파일 및 다국어 파일 등의 리소스 파일, 헤더 파일을 프레임워크 하나로 공유할 수 있기 때문이다. (또한, 프로젝트 내부의 크기를 줄일 수 있다.) 디렉토리 구조는 아래와 같다. CustomFramework.f..
Attribute (@어쩌구) AppDelegate, SceneDelegate 또는 외부 라이브러리 등을 보면 종종 보이는 것 중에 하나가 어노테이션이다. 분명 나는 잘 모르는데 남들은 잘 사용하는 것 같은 기능이다. 역시나 보다 자세하고 정확한 정보는 공식 문서를 통해서 확인하는 것이 좋다. 여기서는 자주 사용하거나 .. 지금 생각나는 것을 위주로 정리할 예정이다. 아닐 수도 어떤 것들이 있는지 살펴보기 전에 무엇인지 먼저 알아보자. Attribute가 뭔데? 이름에서 알 수 있는 것처럼 Attribute는 일종의 속성을 명시한다. 클래스, 프로퍼티, 함수, 파라미터 앞에 위치해서 그것이 특정한 동작을 하도록 어떤 속성을 가질 수 있는 알려주는 것이다. @로 시작하며 아래와 같은 구조를 갖고 있다. @Attribute_Name @A..
Closure (클로저) 클로저에 대한 더 자세하고 정확한 정보는 공식 문서를 참고해주세요. 왜냐면 제 정보가 틀릴 수도 있으니까. 클로저 클로저의 의미 클로저란 간단하게 코드 블럭을 말한다. 이런 코드 블럭을 바탕으로 Swift만의 표현 방식을 작성할 수 있다. 보통 클로저를 익명함수라고 알고 있을 것이다. 클로저에는 크게 두 가지 종류가 있는데, 아래와 같다. 이름이 있는 클로저 (= named closure) 이름이 없는 클로저 (= unamed closure) 그동안에 우리가 자주 사용하는 이름이 있는 함수는 Named Closure이고 이를 우리는 함수라고 통칭하고 있었던 것이다. 그리고 이름이 없는 함수인, 코드 블럭을 우리는 클로저라고 부른다. 클로저는 Named Clousre & Unnamed Closure 둘다 ..
First-Class Citizen(일급 객체) Swift는 함수형 패러다임을 따르고 있다. Swift는 다중 패러다임 프로그래밍 언어이며, 아래와 같은 프로그래밍 패러다임을 차용하고 있습니다. - 명령형 프로그래밍 패러다임 - 객체지향 프러그래밍 패러다임 - 함수형 프로그래밍 패러다임 - 프로토콜 프로그래밍 패러다임 즉, Swift라는 언어는 일급 객체(First-Class Citizen)에 부합하는 언어이다. 공식문서를 살펴보면 Swift에서 함수는 일급 객체이기 때문에 함수를 변수, 상수, 매개변수에 넣을 수 있다고 한다. 그렇다면 여기서 일급 객체란 무엇일까? 일급 객체 일급 객체란 아래 세 가지 조건을 만족하는 객체를 의미한다. 특별한 용도, 혜택이 있다는 것이 아니라 사용할 때 다른 요소들과 아무런 차별 없이 사용할 수 있는 객체이다. 모든..
Singleton Pattern 주로 네트워크 관련 코드 또는 외부 라이브러리 코드를 보면 shared, standard, defaults로 프로퍼티 또는 메서드에 접근하고 있는 코드를 볼 수 있다. 이런 코드들은 싱글톤 패턴을 적용해 만들었기 때문인데, 싱글톤 패턴이 무엇인지 알아보자. Singleton 싱글 .. 벙글 .. 이 아니고 싱글톤, 이름에서 알 수 있는 것처럼 어떤 것을 '하나'로 관리/유지하고 있다는 것을 알 수 있다. 싱글톤에 대한 정의를 찾아보면 아래와 같다. The singleton pattern is a software design pattern that restricts the instantiation of a class to one “single” instance. 즉, 한 개의 클래스로 만드는 객체는 단 하..
프로토콜 프로토콜 프로토콜이란? 프로토콜은 일종의 약속이라고 생각할 수 있다. 프로토콜을 어떻게 활용하냐면, 특정 컨트롤러에서 발생하는 각종 이벤트를 효율적으로 관리하기 위해 대리자(Delegate)를 지정하여 이벤트 처리를 위임하고 실제로 이벤트가 발생하면 위임된 대리자가 콜백 메소드를 호출해주는 델리게이트 패턴을 구현하기 위해 사용된다. 구현해야 하는 메서드의 명세가 작성되어 있고 단순한 선언 형태(구현 없이)로 구성되어 있다. 그러므로 구체적인 내용은 별도로 구현을 해야 한다. 이렇게 특정 프로토콜의 명세를 따르는 타입은 프로토콜을 준수한다고 표현할 수 있다. 구조체, 클래스, 열거형, 익스텐션에서 사용할 수 있고 실질적인 내용은 여기서 작성할 수 있다. 프로토콜과 부모 클래스의 차이점 만약 뷰 컨트롤러에서..
프로퍼티 - 저장 프로퍼티 프로퍼티 .. 가 무엇인가 하면 .. 이름을 붙여서 조금 어렵게 느껴지는 것이지 단순하게 그러니까 쉽게 말하면 우리가 지금까지 열심히 작성한 클래스/구조체에서 선언하던 상수/변수를 말한다. 그리고 Swift에에서 프로퍼티는 크게 3가지로 나눌 수 있다. (그 안에서 프로퍼티 앞에 붙는 키워드에 따라서 조금 다르게 분류되기도 한다.) 저장 프로퍼티 연산 프로퍼티 타입 프로퍼티 이렇게 세개가 존재한다. 저장 프로퍼티 먼저, 저장 프로퍼티에 대해서 알아보자면, 클래스와 구조체에서만 사용할 수 있고, (이름처럼) 값을 저장하기 위해서 선언되는 상수/변수를 말한다. class Human { let name: String = "unknown" var age: Int = 0 } struct Person { let n..