2월, 2020의 게시물 표시

1. Framework: framework란?

이미지
1. Framework: framework란? 이번 포스트에서는 iOS 앱을 개발할 때 외부라이브러리로 많이 이용하는 형태인 framework에 대해서 알아보겠습니다. Framework란? framework는 이미지, nib파일, 다국어 문구, 문서, 공유 라이브러리리, 헤더 파일 등을 포함하는 디렉토리입니다. framework의 목적은 code와 resource를 재사용하는 것입니다. static library(.a파일)는 코드만을 공유하지만 framework는 이미지 파일 및 다국어 파일 등 리소스 파일과 헤더파일을 framework 하나로 공유할 수 있습니다. framework는 또한 bundle이며 NSBundle로 접근할 수 있습니다. 다른 bundle과 다르게 finder에서 보통의 디렉토리 처럼 바로 접근할 수 있습니다. 주요 특징 framework는 관련된 항목을 하나로 묶어줍니다. framework는 static library보다 다양한 리소스 타입을 포함할 수 있습니다. 예를 들어 관련된 헤더 파일과 문서를 포함할 수 있습니다. 여러 버전의 framework를 하나의 bundle에 포함시킬 수 있습니다. 이 점은 오래된 프로그램에서 안정성을 가질 수 있도록 만듭니다. (macOS) Note: framework는 실행코드 없이 리소스 파일만 포함할 수도 있습니다. 그러나 이 방식은 일반적인 사용이 아닙니다. 이런 경우는 프로젝트 생성시 bundle로 생성할 수 있습니다. 구조 MyFramework.framework/ Modules/ module.modulemap Headers/ MyFramework.h MyFramework Resources MyFramework.framework의 디렉토리 구조는 위와 같습니다. MyFramework.framework 디렉토리 아래에 Modules와 Headers 서브디렉토리

Scalar type은 Objective-C로 전달되면 어떻게 될가?

이미지
Scalar type은 Objective-C로 전달되면 어떻게 될가? Objective-C에서 Collection 객체를 사용할 때 scalar type은 값으로 바로 사용할 수 없습니다. NSValue나 NSNumber를 이용하여 값을 객체로 만들어 저장할 수 있습니다. 그에 반해 Swift에서는 scalar type을 값으로 설정할 수 있습니다. 만약 swift에서 scalar type을 저장하고 있는 collection 객체를 objective-C에 전달하면 어떻게 될가요? 이번 포스트에서는 swift와 Objective-C사이에 scalar type을 전달할 때 어떻게 동작하지는 알아보겠습니다. 먼저, NSNumber와 NSValue에 대해서 알아보겠습니다. NSNumber NSNumber는 NSValue의 subclass이며 scalar의 값을 제공합니다. unsigned char, short int, int, long int, long long int, float, double, BOOL을 지원합니다. NSNumber는 collection객체에 scalar type을 전달하기 위해서 사용합니다. collection객체는 객체만 저장할 수 있기 때문에 scalar type은 저장할 수 없습니다. 즉, NSNumber는 scalar type을 저장하고 있는 wrapper객체입니다. NSValue NSValue는 scalartype을 저장할 수 있는 객체입니다. 포인터 주소, 구조체 등을 저장할 수 있습니다. collection 객체나 키-벨류 코딩 등 객체가 사용되어야할 위치에 scalar type을 전달하기 위해서 사용합니다. 지금부터 swift에서 cocoa touch library(Objective-C라이브러리)에 값을 전달할 때 어떻게 동작하는지 확인해보겠습니다. 아래 예제는 CIFilter를 이용하여 이미지의 밝기를 조정하는 코드입니다. let ciImage = CII