2012-08-06 78 views
0

我正在尋找執行.xib(具有自己的控制器和庫)預編譯在服務器上,在運行時下載它。 這可能嗎?iOS - 從服務器執行預編譯的應用程序

謝謝!

編輯:

所以能有人給我使用一個NSBundle程序執行其他應用程序的例子嗎? 如何創建捆綁應用程序?

+1

可能在'允許'或技術上可行嗎? – Jessedc 2012-08-06 11:52:59

回答

2

我不認爲你可以在運行時將xib導入到應用程序的包中(爲了發生這種情況,你將不得不將其導入到應用程序的包中)。其他人可能更瞭解並糾正我!

+2

其實你可以,但正如克里斯解釋的 - 如果有人想在AppStore上發佈應用程序,這種功能是被禁止的(出於安全原因,我想象)。請參閱:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingCode/Concepts/CFNSBundle.html – 2012-08-06 13:56:07

+0

我試過這樣做,通過文檔,但沒有任何例子碼。我是可可/觸摸新手,但我需要實現它!你能否以簡單的方式解釋我?我不假裝把它送到蘋果商店。謝謝! – user1573607 2012-08-07 15:04:59

1

我可以想到幾種方法可以嘗試做到這一點,但是您是否打算將其送到商店?

這是Apple開發人員指南明確禁止的。

+0

嘿克里斯,你能解釋一下你剛剛說的方式嗎?我並沒有試圖將其發送到蘋果商店,僅限於內部業務使用。 謝謝! – user1573607 2012-08-07 15:01:47

+0

嗨,@Caleb提到的方法可以正常工作。正如他所提到的,您將無法動態鏈接與這些XIB關聯的任何代碼,但是您可以執行一些操作,如更改用於inWithNib的nib:對已經在該包中的類。 – 2012-08-08 00:00:06

0

一個.xib文件只是一個數據文件,所以在應用程序包之外加載一個應該不會有問題。我不能說我曾經嘗試過,但只要它是在一個包,你應該能夠:

  1. 使用路徑包包含的.xib你創建一個NSBundle的實例想要加載。請參閱+[NSBundle bundleWithPath:]

  2. 使用您在上一步中創建的包,使用任何常規的.xib加載方法(例如-[UIViewController initWithNibNamed:bundle:]+[UINib nibWithNibName:bundle:])加載.xib。

與它自己的控制器和庫

那部分將無法正常工作。 iOS不允許動態鏈接到系統提供的框架以外的框架,因此無法加載代碼。但是,如果您可以將所需的所有代碼構建到應用程序中,則仍應能夠使用上述的下載的.xib。這可以讓你做一些事情,比如更新你的視圖的佈局方式,或者你的控件連接的目標和動作。

相關問題