2009-07-05 2 views
4

Also habe ich meine erste iPhone App fertig geschrieben, und ich habe sie an eine Gruppe von Beta-Testern geschickt. Alle sind glücklich, außer diesem einen, der bemerkt hat, dass nach dem Start meiner App keine andere App mehr startet.iPhone: Kann meine undichte App andere Apps beschädigen?

Da ich nicht viel über die Speicherverwaltung wusste, habe ich mir die Leaks-Diagramme in Instruments angeschaut und festgestellt, dass es in meiner App einige Lecks gibt.

Drei Fragen:

  1. sind immer schlecht Lecks? Das größte Leck ist 15k auf insgesamt 5,1 MB belegten Speicher.
  2. Wird Apple meine App wegen Lecks ablehnen?
  3. Wird nicht automatisch der gesamte Speicher freigegeben, sobald meine App beendet wird? Könnte es sein, dass meine undichte App anderen Apps schadet?

Dank Sjakelien

+0

Nun, wenn ein Nutzer festgestellt hat, dass Ihre App Auswirkungen darauf hat, wie eine andere App später ausgeführt wird, bleiben einige Auswirkungen Ihres Codes nach dem Beenden Ihrer Anwendung eindeutig erhalten. Selbst wenn Apple es nicht bemerkt, klingt es wie Ihre Rezensenten. –

+1

Wir haben keine reproduzierbare Situation, daher ist es zu kühn zu sagen, dass Sjakeliens App den anderen beeinflusst hat. Wir wissen nur, dass der Tester nicht bemerkte, dass die andere App nicht funktionierte, bis er irgendwann Sjakeliens App lief. – Chuck

Antwort

3

Jede undichte Stelle, die über den Ausgang Ihrer Anwendung bleibt ist ein OS Fehler und damit Problem von Apple.

Es wäre unfair, Ihre App auf dieser Grundlage abzulehnen.
Ich weiß nicht, ob das für Sie ein Trost ist.

Zur Erinnerung, meine App provoziert ein Leck im Medienserverd.
Das Leck ist in der 3.0GM ein kleines bisschen kleiner.

Eine andere falsche Verwendung einer API abgestürzt mediaserverd.
Auch 3.0GM. Böse. Ich hätte einen Fehlercode bevorzugt, aber
könnte theoretisch verwendet werden, um das Leck zu umgehen.

+1

mediaserverd ist nicht sehr vorsichtig mit seinen Eingaben. Das Schlimmste, was ich tun konnte, ist, CPU zu essen und eine Pufferschleife zu verursachen (alles Audio/Vibration bis zum Neustart des Geräts effektiv zu töten). Es gibt auch die Möglichkeit, Audio zu planen, lange nachdem Ihre App geschlossen wurde. Hast du weitere böse Unfälle erlebt? – rpetrich

+0

Zwei Abstürze (1 auf 2.x, 1 auf 3.0), 200k Leck auf 2.x und 200 Bytes auf 3.0. Es ist Müll. –

8

Jede App soll in einer eigenen "Sandbox" laufen und soll keine anderen auf dem Telefon installierten Apps beeinflussen. Wenn dein Rezensent einen Fall gefunden hat, in dem deine App tatsächlich eine andere App beeinflusst hat, ist das definitiv nicht deine Schuld, obwohl ich gerne wissen würde, wie das erreicht wurde;).

Meine Vermutung ist jedoch, dass die andere App Ihres Rezensenten völlig unabhängig von Ihrer App brach und er/sie den Fehler fälschlicherweise Ihrer App zuschreibt. Bitten Sie ihn, das Problem zu reproduzieren (deinstallieren Sie beide Apps, installieren Sie die andere App, installieren Sie Ihre App).

+0

Sie müssen nicht zu weit suchen, um Bugs in iPhoneOS zu finden. Die "iPhone-Hacker" können hier starten: http://openradar.appspot.com/search?query=iphone –

+1

Um den Fehler zu reproduzieren, würde ich sagen, starten Sie einfach das Gerät neu, führen Sie Ihre App und überprüfen Sie dann, ob der andere defekt ist (oder starte neu und führe dann den anderen aus, um zu sehen, ob es trotzdem funktioniert) – Dimitris

5

was die anderen beiden Antworten sagen, stimme ich zu, aber niemand hat die erste Frage ("Sind Lecks immer schlecht") direkt beantwortet. Ich würde sagen, dass sie es sind. Es ist wahr, dass Ihr Programm möglicherweise für lange Zeit ohne Probleme mit ihnen laufen kann. und das OS sollte den Speicher nach der Beendigung bereinigen (es sei denn, es gibt einen Fehler im Betriebssystem, wie zuvor erwähnt). Aber irgendwann wird das Leck zu einem Problem für jemanden werden, wenn sie lange genug laufen. Auch wenn es kein Problem wird, ist es wahrscheinlich eine bewährte Methode, Speicherlecks, die Sie kennen, zu beheben.

1

Es hängt davon ab, was "Speicher" Sie lecken. Verwenden Sie Gerätespeicherplatz, um etwas zwischenzuspeichern? Theoretisch ist es dann möglich, dass Sie genug Speicherplatz verbraucht haben, dass die andere App nicht starten kann, da sie eine gewisse Menge an freiem Speicherplatz benötigt.

Wenn wir physikalischen Speicher sprechen, dann nein. Wenn deine App tot ist, ist sie tot.Sie könnten sie bitten, das Gerät neu zu starten und zu sehen, ob sie das gleiche Problem haben.

1

Apple genehmigt Apps mit Speicherlecks.

Das heißt, wir überprüfen gründlich, dass keiner unserer "Code" leckt vor dem Einreichen bei Apple, weil die Benutzer nicht möchten, dass eine App plötzlich auf sie heruntergefahren. Ich sage "unser Code", weil es Speicherlecks im Framework gibt, die Sie nicht tun. So genehmigt Apple Apps mit Speicherlecks.

Auch ich bin zweifelhaft, dass Ihre App die andere App des Benutzers beeinträchtigt hat. Ich habe dieses Verhalten nicht gesehen.