IT Share you

NIB와 XIB Interface Builder 파일 형식의 차이점은 무엇입니까?

shareyou 2020. 12. 14. 21:05
반응형

NIB와 XIB Interface Builder 파일 형식의 차이점은 무엇입니까?


Interface Builder 파일에서 nib와 xib의 차이점은 무엇입니까?


Interface Builder 버전 3부터는 .nib와 기능적으로 동일한 새로운 파일 형식 (확장자 .xib)이 추가되었습니다. 단, 플랫 파일에 저장되어 개정 제어 시스템의 저장 및 처리에 더 적합합니다. diff와 같은 도구로.

http://en.wikipedia.org/wiki/Interface_Builder#Design


XIB는 번들이 아니라 플랫 파일입니다. 이를 통해 SCM (소스 제어 관리) 시스템을보다 쉽게 ​​처리 할 수 ​​있습니다. 앱을 컴파일 할 때 XIB는 앱에 포함하기 위해 NIB 파일로 컴파일됩니다.

앱 번들에 포함 된 컴파일 된 NIB는 더 이상 Interface Builder에서 편집 할 수 없으며 동등한 XIB 또는 레거시 NIB 파일보다 훨씬 작습니다.


XIB의 파일 basicly의 소스 문서입니다 NIB의 파일 XIB 의 거의 항상 엑스 코드에서 편집 할 수 있습니다 (그들은 오래된 또는 손상되지 않는 한) . 최신 NIB 는 압축되어 열 수 없지만, 이전 NIB 는 Xcode에서 볼 수있는 번들이고, 번들 된 NIB 에는 designable.nib종종 이름이 변경된 XIB 파일 을 포함 하는 일부 소스 / 아카이브 파일이 포함됩니다 .


NIB = N XT I nterface B의 uilder (NXT = 넥스트 스텝 = NS)

XIB = X 용액 I nterface B의 uilder


새로운 아카이브 된 NIB 파일은 Xcode를 포함한 대부분의 응용 프로그램에서 열 수 없지만 여전히 잠재적으로 아카이브되지 않을 수 있습니다. 나는이라는 프리웨어 응용 프로그램을 발견 NibUnlocker 온 더 CharlesSoft 잠재적으로 평면 분해 할 수 있습니다 웹 사이트 펜촉 파일과로 수출 XIB의 문서를. 이 응용 프로그램은 여전히 ​​버그가 있지만 Nib 의 내용 에 따라 매우 정확 합니다.

(NibUnlocker는 매우 부정확 한 이름이며 펜촉이 잠겨 있지 않고 보관됩니다.)


NibUnlocker를 다운로드하려면 클릭하십시오


조금 더 알고 싶다면 NIBXIB 형식 관련하여 아래에 제공 한 추가 정보를 읽을 수 있습니다 .

Nxt 인터페이스 빌더 해부 :

플랫 NIB s

Flat NIB 파일은 분석하기 복잡한 파일이지만 불가능하지는 않습니다. 이러한 파일의 구조는 애플 바이너리 속성 목록 ( "bplist00"으로 시작)이며 일부 내용은 NSKeyedArchiver를 통해 보관됩니다. NIB 는 속성 목록으로 형식이 지정 되기 때문에 작은 해킹이 허용됩니다. 실제로 플랫 Nib 의 확장자 를 .plist로 변경하는 경우 ( 예 : ArchivedNib.nibArchivedNib.plist당신은 실제로 모든 값이 엑스 코드가 일부 값 (CFKeyedArchiverUID 값)을 표시하는 방법을 알고하지 않기 때문에 표시됩니다 있지만 프로퍼티리스트로 표시하지 엑스 코드에서 열 수 있습니다. Nib 을 속성 목록으로 볼 때 $ version, $ objects, $ archiver 및 $ top과 같은 몇 가지 기본 속성을 얻을 수 있습니다.

유용한 정보

CFKeyedArchiverUID의 목적은 값 {=} XX의 값은이고, 단순히 리디렉터 인 인덱스 $의 항목 (어레이의 시작부터) 배열 개체. 예. <CFKeyedArchiverUID 0x60800002bc20 [0x7fffef6b8c30]>{value = 29}, 값 = 29, 결과는 $ object 배열의 29 번째 항목이됩니다 (배열이 0으로 시작한다는 점을 기억하십시오). Objective C에서는 다음 메서드를 사용하여 CFKeyedArchiverUID에서이 값을 검색 할 수 있습니다.

+ (NSUInteger)valueForKeyedArchiverUID:(id)keyedArchiverUID {
  void *uid = (__bridge void*)keyedArchiverUID;
  NSUInteger *valuePtr = uid+16;
  return *valuePtr;}

(내가 인터넷을 사용하여 자신이 밖으로을 발견하고 나중에 내가 사용 호퍼를 분해 NibUnlocker 는로드하여 동일한 기술을 사용하고, 나는 그것의 소스 코드에서 발견 NIB를있는 NSDictionary 및 모든 연결을 통해가는 객체, 등 및 새로운 XIB를 작성합니다 )

yo 이것이 도움이된다면 upvote로 나를 때렸다 ;-)


또한 프로젝트를 컴파일 할 때 .xib 파일이 nib로 컴파일됩니다.


xib는 소스 제어 친화적 인 형식입니다.

참고 URL : https://stackoverflow.com/questions/3726400/what-is-the-difference-between-nib-and-xib-interface-builder-file-formats

반응형