2017-02-04 9 views
2

저는 iOS 앱 제작 과정을 연구하고 있습니다. "단일보기 응용 프로그램"프로젝트를 만들고 Xcode 8.2.1을 작성했습니다. 빌드 보고서를보고있는 동안 Xcode가 clang을 사용하여 .m 파일을 컴파일하고 링크 한 다음 ibtool을 사용하여 스토리 보드 파일을 컴파일하고 링크합니다. 컴파일과 링크 과정에서 ibtool이 실제로 무엇을하는지 궁금합니다. 다음 컴파일 명령 후 .storyboardc 파일은 나중에 "Link Storyboards"단계에서 사용되는 /Users/Kazu/Library/Developer/Xcode/DerivedData/ObjCHelloWorld-guewhpmwckompbfvsbhizkifcadg/Build/Intermediates/ObjCHelloWorld.build/Debug-iphonesimulator/ObjCHelloWorld.build/Base.lproj/ 디렉토리에 생성됩니다. .storyboardc 파일은 Info.plist 파일을 포함하여 바이너리의 묶음이었다.ibtool은 스토리 보드 컴파일 및 링크 단계에서 무엇을합니까? 그리고 링크 된 스토리 보드의 결과가 실행 파일과 어떻게 작동합니까?

ObjCHelloWorld/Base.lproj/LaunchScreen.storyboard 
cd /Users/Kazu/Dropbox/ObjCHelloWorld 
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
export XCODE_DEVELOPER_USR_PATH=/Applications/Xcode.app/Contents/Developer/usr/bin/.. 
/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool --errors --warnings --notices --module ObjCHelloWorld --output-partial-info-plist /Users/Kazu/Library/Developer/Xcode/DerivedData/ObjCHelloWorld-guewhpmwckompbfvsbhizkifcadg/Build/Intermediates/ObjCHelloWorld.build/Debug-iphonesimulator/ObjCHelloWorld.build/LaunchScreen-SBPartialInfo.plist --auto-activate-custom-fonts --target-device iphone --target-device ipad --minimum-deployment-target 10.2 --output-format human-readable-text --compilation-directory /Users/Kazu/Library/Developer/Xcode/DerivedData/ObjCHelloWorld-guewhpmwckompbfvsbhizkifcadg/Build/Intermediates/ObjCHelloWorld.build/Debug-iphonesimulator/ObjCHelloWorld.build/Base.lproj /Users/Kazu/Dropbox/ObjCHelloWorld/ObjCHelloWorld/Base.lproj/LaunchScreen.storyboard 

연결 단계에서 다음 명령이 실행됩니다.이 명령은 ibtool이 무엇을하는지 전혀 모릅니다. 컴파일 단계에서 생성 된 파일은 storyboardc입니다.

LinkStoryboards 
cd /Users/Kazu/Dropbox/ObjCHelloWorld 
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
export XCODE_DEVELOPER_USR_PATH=/Applications/Xcode.app/Contents/Developer/usr/bin/.. 
/Applications/Xcode.app/Contents/Developer/usr/bin/ibtool --errors --warnings --notices --module ObjCHelloWorld --target-device iphone --target-device ipad --minimum-deployment-target 10.2 --output-format human-readable-text --link /Users/Kazu/Library/Developer/Xcode/DerivedData/ObjCHelloWorld-guewhpmwckompbfvsbhizkifcadg/Build/Products/Debug-iphonesimulator/ObjCHelloWorld.app /Users/Kazu/Library/Developer/Xcode/DerivedData/ObjCHelloWorld-guewhpmwckompbfvsbhizkifcadg/Build/Intermediates/ObjCHelloWorld.build/Debug-iphonesimulator/ObjCHelloWorld.build/Base.lproj/LaunchScreen.storyboardc /Users/Kazu/Library/Developer/Xcode/DerivedData/ObjCHelloWorld-guewhpmwckompbfvsbhizkifcadg/Build/Intermediates/ObjCHelloWorld.build/Debug-iphonesimulator/ObjCHelloWorld.build/Base.lproj/Main.storyboardc 

제 질문은 링크 단계에서 무엇을하고 있습니까? clang이 수행 한 이전 링크 단계에서 생성 된 실행 파일 또는 제품에 대한 링크가 있습니까?

답변

0

답변을 찾았거나 광산에서 답변을 얻을 수 있는지 확실하지 않지만 어쨌든 게시 해 드리겠습니다. 당신이 컴파일 된 응용 프로그램 (IPA 파일)에서 피크를 가지고가는 경우에

, 당신은 평소 XIB 파일이 NIB로 변환 *.storboardc로 변환 *.storyboard (C 컴파일 의미한다) 볼 수 있습니다. 그런 다음 xib 또는 스토리 보드 파일을 텍스트 편집기로 열면 xml 내용이 표시됩니다.

xcode를 사용하고 xib/storyboard 파일을 볼 때 ibtool이 xml 콘텐츠를 사용자 인터페이스에 생성한다고 생각합니다. 그런 다음 빌드 할 때 이진 파일 (nib, storyboardc)을 생성합니다.

링크 단계는 컴파일 된 파일의 경로를 만들어지도 등을 만들어야합니다. 해당 파일을 열려면 호출을하면 앱은지도 내에서 경로를 찾아 특정 번들 (일반적으로 컴파일 된 앱 폴더의 루트에있는 기본 번들)에서 원하는 nib 파일을 가져옵니다. 아니, initWithXibName

initWithNibName :

추신 : 메소드가 호출 이유는 아마