2014-07-03 109 views
0

我需要能夠從遠程服務器上下載頭文件(.h)並在運行時加載它並使用它的內容 - 主要是數組,結構體等。我該怎麼做目標C中的iOS sdk?在運行時加載頭文件

+1

沒有頭文件只被編譯器使用。 – rckoenes

+3

你可以給我們一些背景 - 你到底想要達到什麼目的? –

+0

如果你打算在運行時加載一個類,請使用它作爲參考..但我懷疑這是可用於iOS ... https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/LoadingCode /LoadingCode.html#//apple_ref/doc/uid/10000052-SW1 – Krishnan

回答

2

你需要一個C編譯器來解析這些頭文件,如果它們包含的都是3D模型數據,那就有些過度了。 (更不用說不允許App Store了。)

您應該考慮將3D數據導入到您的應用中的其他格式。我相信可能會有像Wavefront OBJ這樣的格式的第三方庫,並且在iOS 8中,您可以使用SceneKit加載Collada DAE和Alembic ABC文件(但只能在Xcode壓縮後)。

+0

謝謝,這是我會去的。這對我來說更是一個好奇的話題,我想知道客觀的c是否有類似於js中eval()的東西,我可以在運行時從字符串生成整個方法/類,但我想這是不可能的。 –

0

它會幫助抓住遠程plist並在運行時處理配置?你可以這樣做:

NSURL *plistUrl = [NSURL URLWithString:@"http://theurlto.com/your.plist"]; 
NSDictionary *remotePlistDictionary; 
NSURLRequest *request = [NSURLRequest requestWithURL:plistUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0]; 
NSError *error; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error]; 

if (!error) 
{ 
    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding]; 
    remotePlistDictionary = [responseString propertyList]; 
} 

字典remotePlistDictionary將包含配置。該plist甚至可以根據URL參數動態生成。