2017-09-01 63 views
0

我的應用正在抓取CoreData字符串和uiimages。我還捕獲相機的實時供稿並將其顯示在UIView上。隨機的設備'失去連接'。我已經檢查了內存和CPU的使用情況,沒有發現任何問題。'Lost Connection'隨機發生Swift

lost Connection

我偶爾得到這些打印警告

Received memory warning.

_BSMachError: (os/kern) invalid name (20)

_BSMachError: (os/kern) invalid name (15)

Communications error: { count = 1, contents = "XPCErrorDescription" => { length = 22, contents = "Connection interrupted" } }>

我試過設置我的本地化本地開發區域在Info.plist中以美國作爲被廣泛建議,但沒有運氣。

我在我的測試設備(iPod)上運行Xcode 9測試版和iOS 10。

+0

如果可能,避免使用測試版。我遇到了這個問題,因爲我的設備耗費了太多內存(它只發生在舊設備上,而不是最近的設備上),我認爲iPad可能有問題。 – Larme

+0

所有的CD和相機活動應該在後臺線程上 - 不要阻塞主線程。 –

+0

@DavidH如果我沒有指定在主線程中執行它,它會自動在後臺執行還是需要指定 –

回答

0

我拍照的方式返回了非常高質量的圖像(1000像素)。所以當我在prepareForSegue中傳遞圖像並使用Core Data保存圖像時,它會使設備過載。

所以我使用這段代碼來減小圖像的大小和工作。

func resizeImage(image: UIImage, newWidth: CGFloat) -> UIImage { 
    let scale = newWidth/image.size.width 
    let newHeight = image.size.height * scale 
    UIGraphicsBeginImageContext(CGSize(width: newWidth, height: newHeight)) 
    image.draw(in: CGRect(x: 0,y: 0,width: newWidth,height: newHeight)) 
    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return newImage! 
}