2011-04-27 35 views
0

在我的應用程序中,我需要從一個類傳遞一個NSMutableString到另一個,所以我把它extern。問題是,當我運行應用程序,類只能訪問一次字符串,第二次應用程序崩潰!顯然NSMutablString在第一次訪問後變成了零。所以我試圖找出一些東西:我將字符串轉換爲C字符。那麼這次應用程序不會崩潰,但是..每當我打電話時,char的值就會改變! 感到很困惑:請我需要知道與聲明爲extern的NSMutableString對象的問題

  1. 有什麼辦法來維持NSMutablString的價值,因此將可每次一類調用呢?
  2. 是什麼導致char值的變化?

感謝所有幫助

+2

你能發表一些代碼嗎?這會有很大的幫助。 – 2011-04-27 22:12:51

+0

http://stackoverflow.com/questions/5565438/problem-in-copy-string-for-other-class可能對你有幫助 – Pooja 2011-04-27 22:21:51

回答

1

這聽起來像你正在做一些奇怪的事情,真的。

  • 如果你想從一個對象(源)傳遞的NSMutableString實例到另一個(目標),您應該將其分配給目標對象的屬性,或者通過某些方法調用傳遞。

  • 目標對象應該保留此實例(顯式地,或者使用屬性的'retain'標誌),以確保實例有效,而不管源對象是幹什麼的。目標對象也應該釋放它,當它不再需要時,否則你會引入內存泄漏。

  • 它不是很明顯,「NSMutableString(指針)變成零」。任何無效的引用在解除引用時都可能導致崩潰,不僅無。其實,我的猜測是你試圖訪問一個被刪除的對象。

  • 我想你已經使用[NSMutableString cStringUsingEncoding:]或類似的方法來獲取字符指針。請記住,返回的指針在有限的時間內有效,請檢查文檔。

無論如何,這是所有非常基本的東西。您應該閱讀Memory Management Progamming Guide並確保您瞭解一切。開發穩定的Objective-C代碼非常重要。

+0

謝謝我只需要添加retain屬性[myString retain]它的工作正常 – Meriam 2011-04-29 16:17:06