[ios] 임베디드 바이너리와 링크 된 프레임 워크의 차이점은 무엇입니까?
외부 프레임 워크를 사용할 때 Xcode에는 이제 Linked Frameworks 섹션 과 함께 임베디드 바이너리 가 있습니다 .
외부 프레임 워크를 다운로드하고 Finder-> Xcode로 드래그하면 프레임 워크가 연결된 프레임 워크 및 라이브러리 섹션에 배치됩니다.
Carthage로 라이브러리를 빌드 할 때 임베디드 바이너리 섹션 으로 드래그하는 것이 좋습니다 .
API가 어느 쪽이든 사용할 수있게됨에 따라 둘 다 연결 측면에서 작동하는 것 같습니다. 임베디드 바이너리 섹션에 프레임 워크를 추가하면 링크 된 프레임 워크 및 라이브러리 섹션 에도 자동으로 추가됩니다 .
그래서, 누가 옳습니까? 카르타고 또는 나머지 인터넷? Xcode 프로젝트에 외부 리소스를 포함하는 두 가지 옵션이있는 이유는 무엇입니까?
답변
-
연결-프레임 워크에 정의 된 API를 사용하는 경우 프레임 워크를 연결해야합니다.
-
임베딩-이 프로세스는 추가 된 프레임 워크가 App Bundle 내에 임베드되도록하고 잠재적으로 앱과 확장 번들간에 코드를 공유하는 데 도움이됩니다. iOS에서 제공하는 프레임 워크는 기기에서 쉽게 사용할 수 있으므로 타사 프레임 워크 만 포함합니다. 임베딩하는 경우 Xcode가 빌드를 컴파일하고 생성 할 수 있도록 링크도 연결해야합니다. 앱이 기기에서 실행되면 필요에 따라 임베디드 프레임 워크가 메모리에로드됩니다.
답변
바이너리를 포함하면 제품에 포함됩니다. 포함하지 않고 라이브러리 또는 프레임 워크 만 링크하는 경우 제품의 일부가 아닙니다.
그러나 iOS8에서는 모든 타사 프레임 워크가 “임베디드”되어야합니다. 다양한 프로그램간에 공유되는 프레임 워크조차도 모든 프로그램에 “내장”되어야합니다. 공유 위치의 장치에 설치된 경우 공유 위치에서 동일한 “내장”코드를 사용하는 다른 설치 프로세스는 기존 설치를 다시 사용할 수 있습니다. 이것은 iOS8에만 해당되며 iOS8 이전 및 iOS 세계 밖에서는이 답변이 정확하지 않을 수 있습니다.
답변
답변
내 이해에 따르면 임베디드 바이너리에는 iOS 8 이상에서 사용할 수있는 동적 프레임 워크 만 포함됩니다. 그렇지 않으면 정적 프레임 워크 만 연결할 수 있습니다.