[objective-c] xcode4의 프레임 워크와 정적 라이브러리의 차이점 및 호출 방법

나는 xcode와 objective-c를 처음 접했습니다. 매우 기본적인 질문을하고 싶습니다.

프로젝트 설정에서 “바이너리를 라이브러리에 링크”할 때 작업 공간의 다른 프로젝트에서 가져온 프레임 워크와 라이브러리에 차이가 있음을 알았습니다.

첫 번째 질문, 왜 프레임 워크가 있습니까? 그리고 왜 도서관이 있습니까? 내 라이브러리가 프레임 워크가 될 수 없습니까?

그런 다음 .h 파일에서 가져온 정적 라이브러리에서 클래스를 어떻게 호출 할 수 있습니까?

접두사가 있어야한다고 생각하지만 찾을 수 없습니다. “ProjName / Myclass.h”도 작동하지 않습니다.

최대한 구체적으로 작성하십시오.

감사



답변

프레임 워크가 정적 라이브러리에 비해 가장 큰 장점은 컴파일 된 라이브러리 바이너리 및 관련 헤더를 패키징하는 깔끔한 방법으로 작동한다는 것입니다. Foundation 및 UIKit과 같은 SDK의 내장 프레임 워크와 같이 프로젝트에 드롭 할 수 있으며 대부분의 경우 작동해야합니다.

대부분의 프레임 워크에는 동적 라이브러리가 포함되어 있습니다. Mac Framework 템플릿을 사용하여 Xcode에서 생성 된 프레임 워크는 동적 라이브러리를 생성합니다. iPhone은 동적 프레임 워크를 지원하지 않기 때문에 재사용 가능한 iOS 코드 라이브러리가 정적 라이브러리로 배포되는 것이 일반적이되었습니다.

정적 라이브러리는 괜찮지 만 사용자 측에서 약간의 추가 작업이 필요합니다. 프로젝트를 라이브러리에 연결하고 헤더 파일을 프로젝트에 복사해야합니다. 또는 빌드 설정에서 적절한 헤더 검색 경로를 설정하여 어딘가에 참조해야합니다.

요약하자면, 제 의견은 라이브러리를 배포하는 가장 좋은 방법은 프레임 워크라는 것입니다. iOS 용 “정적”프레임 워크를 만들려면 기본적으로 일반 프레임 워크를 사용하고 바이너리를 컴파일 된 정적 라이브러리로 바꿀 수 있습니다. 이것이 내 라이브러리 중 하나를 배포하는 방법입니다. Resty 를 배포하는 방법이며 앞으로 라이브러리를 배포 할 방법입니다.

해당 프로젝트에서 제공된 Rakefile을보고 싶을 수도 있습니다 (알지 못하는 경우 Rake는 Ruby의 Make와 동일합니다). 프로젝트를 컴파일하는 데 필요한 몇 가지 작업이 있습니다.xcodebuild ) iOS의 정적 프레임 워크로 패키징 있습니다. 이것이 유용하다는 것을 알게 될 것입니다.

또는 이러한 Xcode 4 템플릿 을 사용하여 iOS 프레임 워크를 만들 수도 있습니다 .

2013 년 12 월 9 일 업데이트 : 이것은 대중적인 답변이므로 라이브러리 배포에 대한 첫 번째 선택이 변경되었다고 편집하려고 생각했습니다. 소비자 또는 생산자로서 타사 라이브러리에 대한 첫 번째 선택은 CocoaPods입니다. CocoaPods를 사용하여 라이브러리를 배포하고 대체 옵션으로 헤더가있는 미리 컴파일 된 정적 라이브러리를 제공합니다.


답변

기본적으로 프레임 워크는 라이브러리이며이를 사용하기위한 편리한 메커니즘을 제공합니다. 프레임 워크를 “내부”로 살펴보면 정적 라이브러리와 헤더 파일 (메타 데이터가있는 일부 폴더 구조)이 들어있는 디렉토리 일뿐입니다.

자체 프레임 워크를 만들려면 “정적 라이브러리”를 만들어 특정 방식으로 압축해야합니다. 보다 이 질문을

일반적으로 플랫폼의 framworks는 “기존 프레임 워크에”고유 코드를 추가하는 재사용 가능한 동작에 사용됩니다. 특정 기능을 원한다면 라이브러리 (예 : three20)를 사용하여 배포 가능한 앱에 패키징 할 수 있습니다


답변