iPhone App stürzt auf iOS 4 ab, funktioniert gut auf 3.x
Frage
Ich habe eine kleine Anwendung mit iPhone 3.x SDK geschrieben. Die App funktioniert gut auf Gerät/Simulator 3.x. Wenn ich jedoch zu Gerät/Simulator 4 wechsle, wird es direkt beendet, wenn ich zwischen den Registerkarte Seiten navigiere. Hier ist das Protokollformular ~/Bibliothek/Protokolle/CrashReporter,
Ausnahmetyp: Exc_bad_access (Sigbus) Ausnahmecodes: Kern_protection_failure unter 0x00000000000003 Abstürze Thread: 0 Versandwarteschlange: com.apple.main-thread
Anwendungsspezifische Informationen: OBJC_MSGSEND () Auswahlname: ISKINDOFCASS: iPhone Simulator 4.0 (211.1), iPhone OS 4.0.2 (iPhone/8A400A)
Thread 0 Crashed: Dispatch queue: com.apple.main-thread 0 libobjc.A.dylib 0x02502a97 objc_msgSend + 27 1 UIKit 0x00303f20 -[UIView(Internal) _didMoveFromWindow:toWindow:] + 955
Könnten Sie mir bitte Hilfe geben, danke im Voraus.
Linkou Bian E -Mail/MSN: linkou.bian@gmail.com
Lösung
Ich habe das geschrieben Blog, um zu verstehen und zu debuggen exc_bad_access
Grundsätzlich vermitteln Sie einen Zeiger, der auf Speicher hinweist, der Ihrem Prozess nicht zugeordnet ist. Die Hauptgründe, warum dies passieren könnte, sind
- Sie verwenden ein Objekt, das behandelt wurde
- Der Haufen ist korrupt
Die Dinge, die Sie tun sollten, um dies zu debuggen:
Bauen und analysieren. Die Berichte über Lecks sind schlecht, aber nicht mit diesem Problem zusammenhängen - Sie möchten nach Problemen von zu wenigen Halten suchen
Einschalten Zombies und rennen im Debugger. Jetzt wird keiner Ihrer Objekte behandelt, aber wenn sie eine Zahlung von 0 haben, beschweren sie sich beim Debugger, wenn Sie sie verwenden.
Es gibt andere Tipps im Blog, die etwas schwieriger zu erklären sind
Andere Tipps
Ich bin Vumeter -Funktionalität mit Live -Radio -Streaming entwickelt. Es funktioniert gut, wenn ich Simulator Version 4.0 begegne, aber in Geräten (3GS, 4.0) funktioniert es nicht, dass ich keine aktualisierten Werte von Audiolevels erhalte. Nehmen wir zum ersten Mal an, als Methode Call I Value Levels: 0,001817, Peaklevels: 0,005463 sein bleibt gleich, während im Simulator der gleiche Code gut funktioniert.
levels[0] = self.audioLevels[0].mAveragePower ;
peakLevels[0] = self.audioLevels[0].mPeakPower ;
Vorschlag oder Rat müssen ...