2012-07-30 76 views
0

我想實現與異步套接字的背景模式。 下面是一些代碼:iPhone OS 3.x - 背景asyncsockets(如果語句不可行?)

CFReadStreamRef theReadStream; 
CFWriteStreamRef theWriteStream; 

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0) {   
    CFReadStreamSetProperty (theReadStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP); 
    CFWriteStreamSetProperty(theWriteStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP); 
} 

我知道kCFStreamNetworkServiceTypekCFStreamNetworkServiceTypeVoIP在iPhone可與iOS開始在4.0。

上面的代碼實際上是可行的,當我內置到iPhone的iOS 4.0開始。

但是,我無法成功地將上面的代碼構建到iPhone上。

我已將陳述([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0)添加到上述代碼中。

我不知道我爲什麼不能進入程序,特別是我添加了if語句。

+0

您無法構建。那麼當你構建時你會得到什麼錯誤? – 2012-07-30 04:10:52

+0

它只在運行時顯示黑屏,因爲我內置到iOS 3.1的iPhone中。然後,我得到了如下錯誤:dyld:找不到符號:_kCFStreamNetworkServiceType – 2012-07-30 06:24:06

+0

我也使用了語句'#if __IPHONE_OS_VERSION_MAX_ALLOWED> __IPHONE_4_0',但它仍然不起作用。 – 2012-07-31 07:07:08

回答

0

我想你會得到編譯時錯誤,因爲你的代碼中使用了kCFStreamNetworkServiceType和kCFStreamNetworkServiceTypeVoIP,這在iOS 3.1中不可用。它可用於iOS 4.0以上。所以你應該使用#if類型的宏來擺脫那個錯誤。希望對你有所幫助。