我正在尋找執行.xib(具有自己的控制器和庫)預編譯在服務器上,在運行時下載它。 這可能嗎?iOS - 從服務器執行預編譯的應用程序
謝謝!
編輯:
所以能有人給我使用一個NSBundle程序執行其他應用程序的例子嗎? 如何創建捆綁應用程序?
我正在尋找執行.xib(具有自己的控制器和庫)預編譯在服務器上,在運行時下載它。 這可能嗎?iOS - 從服務器執行預編譯的應用程序
謝謝!
編輯:
所以能有人給我使用一個NSBundle程序執行其他應用程序的例子嗎? 如何創建捆綁應用程序?
我不認爲你可以在運行時將xib導入到應用程序的包中(爲了發生這種情況,你將不得不將其導入到應用程序的包中)。其他人可能更瞭解並糾正我!
其實你可以,但正如克里斯解釋的 - 如果有人想在AppStore上發佈應用程序,這種功能是被禁止的(出於安全原因,我想象)。請參閱:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingCode/Concepts/CFNSBundle.html – 2012-08-06 13:56:07
我試過這樣做,通過文檔,但沒有任何例子碼。我是可可/觸摸新手,但我需要實現它!你能否以簡單的方式解釋我?我不假裝把它送到蘋果商店。謝謝! – user1573607 2012-08-07 15:04:59
我可以想到幾種方法可以嘗試做到這一點,但是您是否打算將其送到商店?
這是Apple開發人員指南明確禁止的。
嘿克里斯,你能解釋一下你剛剛說的方式嗎?我並沒有試圖將其發送到蘋果商店,僅限於內部業務使用。 謝謝! – user1573607 2012-08-07 15:01:47
嗨,@Caleb提到的方法可以正常工作。正如他所提到的,您將無法動態鏈接與這些XIB關聯的任何代碼,但是您可以執行一些操作,如更改用於inWithNib的nib:對已經在該包中的類。 – 2012-08-08 00:00:06
一個.xib文件只是一個數據文件,所以在應用程序包之外加載一個應該不會有問題。我不能說我曾經嘗試過,但只要它是在一個包,你應該能夠:
使用路徑包包含的.xib你創建一個NSBundle的實例想要加載。請參閱+[NSBundle bundleWithPath:]
。
使用您在上一步中創建的包,使用任何常規的.xib加載方法(例如-[UIViewController initWithNibNamed:bundle:]
或+[UINib nibWithNibName:bundle:]
)加載.xib。
與它自己的控制器和庫
那部分將無法正常工作。 iOS不允許動態鏈接到系統提供的框架以外的框架,因此無法加載代碼。但是,如果您可以將所需的所有代碼構建到應用程序中,則仍應能夠使用上述的下載的.xib。這可以讓你做一些事情,比如更新你的視圖的佈局方式,或者你的控件連接的目標和動作。
可能在'允許'或技術上可行嗎? – Jessedc 2012-08-06 11:52:59