2015-12-15 81 views
0

我有一個藍牙設備以400Hz每秒發送加速計數據。我用這些數據做了以下幾件事:1)根據這些數據對車輪進行動畫處理,2)標準偏差。NSString記錄到文件時崩潰

我的問題是,然而,一段時間後(後線1000的打印),在同一條直線上的應用程序崩潰,我創建一個NSString的數據,所以我可以將數據寫入到一個文本文件中。當發生這種崩潰時,我檢查字符串中的每個變量以確保它是有效的,並且每個變量都是有效的。我已經看到NSString報告自己是一個(INT),所以我認爲有某處存在內存泄漏。

我添加了@autoreleasepool{},但同一行崩潰。這是一個截圖。

enter image description here 我怎樣才能找出是什麼導致崩潰?

+0

應用程序是多線程的嗎? –

+0

是的,它是多線程的。 – WrightsCS

+0

這種方法是線程安全的嗎?有沒有鎖?看起來像踩我的安全問題 –

回答

0

這是通過將copy添加到_locationString來解決的。

[_locationString copy] 
+0

那麼你知道它爲什麼會發生,因爲修復對我來說看起來不太穩固。更好的做法是使用'locationString'屬性,它具有'copy'屬性,因此在設置時會被複制,而不是在使用時(並且每次訪問它時都不需要該代碼)。 – trojanfoe

+0

我確實將'locationString'屬性設置爲'copy'。出於某種原因,我還必須添加上述內容。不知道爲什麼。 – WrightsCS

+0

如果它是一個屬性,那麼你應該使用getter(即'self.locationString')。 – trojanfoe