2013-11-21 74 views
0

我正在使用FTPHelper執行基本的下載/上傳FTP功能。使用它上傳到我的目的地時,我一直頻繁發生崩潰。在第一次上傳時似乎並沒有發生崩潰,但隨着我進行後續的調用,崩潰的可能性越來越大。 Xcode中吐出EXC_BAD_ACCESS(代碼= 1,地址=的0x30)在輔助類::使用iOS上的FTP庫進行上傳時,EXC_BAD_ACCESS/SIGSEGV(CFWriteStreamOpen)

success = CFWriteStreamOpen(writeStream); 

我已經啓用異常斷點和殭屍,但我沒有看到任何東西我可以感517線的。下面是什麼我的堆棧跟蹤看起來像在每個失事扣:

enter image description here

我已經能夠重新與其他幾個FTP庫(BlackRacconFTPManager)此相同的堆棧跟蹤。

上傳的文件是用戶與用戶界面交互產生的簡單文件,也就是說它是基於用戶在屏幕上選擇的內容而動態生成的。這裏是生成,保存在本地代碼,並上傳文件:

//Prepare to write a new file to the device and then upload it 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *putContent = [NSString stringWithFormat:@"V%d\n", (int)(funnySlider.value * -1)]; 
NSString *writepath = [documentsDirectory stringByAppendingPathComponent:@"foo.dat"]; 

//if the path exists 
if([[NSFileManager defaultManager] fileExistsAtPath:writepath]){ 

    //Upload the newly created file 
    [putContent writeToFile:writepath atomically:NO encoding:NSASCIIStringEncoding error:nil]; 
    [FTPHelper upload:@"foo.dat"]; 
} 

一些奇怪的事情,我想強調,以及...灌裝foo.dat有很多的繁文縟節內容,以增加其文件大小品牌該應用程序更穩定。在100KB +以上幾乎可靠。使用iPod Touch第四代時我也沒有崩潰(好吧,我有一個,但它是在幾十次和幾十次測試之後)。然而,iPhone和iPad卻做到了。任何想法如何解決這個問題或爲什麼它可能會發生?我應該放棄這種上傳方式嗎?

回答

0

發佈的問題中遇到的問題實際上是CFFTPStream中報告的錯誤。當這篇文章沒有引起任何關注時,我從另一篇發表在Apple開發論壇上的帖子中收到了這些信息。

調用CFWriteStreamCreateWithFTPURL後,立即禁用流的持續連接,像這樣:

CFWriteStreamSetProperty(writeStream, 
         kCFStreamPropertyFTPAttemptPersistentConnection, 
         kCFBooleanFalse); 

的更多信息,可以發現here in another StackOverflow question我做一些更多的研究,當在和the post I made to the dev forums.跌跌撞撞希望這可以幫助別人!