2012-06-23 53 views
0

我一直在iOS應用程序工作一段時間,現在已準備好提交。但是,當我爲測試目的(運行iOS 5)向少數人提供時,他們報告了應用程序崩潰和主屏幕顯示在手機上的情況,或出現沒有任何響應的凍結應用程序屏幕應用程序崩潰儘管已啓用ARC

應用程序啓用了ARC,Xcode不顯示任何警告。所以,我非常擔心什麼是錯的。我已經以下列方式聲明瞭屬性:

@property (nonatomic) IBOutlet UILabel *devCountLabel; 

@property (nonatomic) IBOutlet UIView *splashView; 

同樣也聲明瞭其他屬性。有誰能提供解決方案嗎?它主要是一個基於網絡的應用程序,因此CoreData使用率最低。

PS:應用程序不會在模擬器中崩潰,所以我猜它具有與內存相關的內容。崩潰是隨機的。所以,重複一系列重現崩潰的步驟也無濟於事。例如: 當我點擊一個按鈕時,modalViewControllerAnimation結果正常。現在,大多數情況下都會發生這種情況,並會在其他時間凍結應用。

+0

可以添加螃蟹日誌呢? – rishi

+0

螃蟹日誌?你在談論控制檯上的東西嗎?那麼沒有什麼通過模擬器.. :(:(我必須通過電話檢查.. – proctr

+1

我猜@rishi是指CrashLog/s – Till

回答

3

的崩潰日誌將有所幫助,但這裏是我的猜測:

Interface Builder的出口性能應weak,使他們成爲nil他們獲得釋放後。

在您的代碼中,它們的語義是assign(這是默認設置,因爲您只寫了nonatomic),它用於基元類型。當它被釋放時,你會得到一個懸掛指針,當你使用它時,應用程序崩潰。

試試這個:

@property (weak, nonatomic) IBOutlet UILabel *devCountLabel; 
@property (weak, nonatomic) IBOutlet UIView *splashView; 
+1

從Xcode 4.3開始,'strong'是屬性聲明的默認值,沒有明確的所有權。請參閱[文檔](http://clang.llvm.org/docs/AutomaticReferenceCounting.html#ownership.spelling.property)。 – zpasternack

+0

@zpasternack感謝您的領導!等待日誌然後,所以我可以更新我的答案。 –

+0

這不是事實,IBOutlet屬性**必須弱。這可能是事實,這是一件好事。但是,如果您查看Apple自己生成的UI代碼,則IBOutlet屬性通常是「強大的」,並且顯式調用將它們清除爲「viewDidUnload」。 – Nate