iPhoneSimulator, wo liegen die Unterschiede?

kthesun

kthesun

Aktives Mitglied
Thread Starter
Dabei seit
01.06.2008
Beiträge
1.254
Reaktionspunkte
80
Hi,

Ich arbeite grad an einer App in der ich relativ viel mit größeren Datenmengen arbeite. Ich bin ein schlechter Programmierer, deshalb könnt ihr davon ausgehen, dass es vermutlich auch schlecht programmiert ist.

Ich habe die Developer Mitgliedschaft noch nicht, will sie aber bald abschließen. Ich weiß, dass ich dann auch richtig auf dem iPhone testen kann (wobei ich auch nur ein iPhone 3G habe...iPod Touch und iPhone Classic kann ich dann nicht testen).

Arbeitet der iPhoneSimulator mit einer korrekt simulierten Hardware? Z.B. Arbeitspeicher, Prozessoregeschwindigkeit und so weiter.
Sprich, angenommen das iPhone würde überlastet sein mit den Daten, würde man das im Simulator schon feststellen können?


Danke.
 
Zuletzt bearbeitet:
Arbeitet der iPhoneSimulator mit einer korrekt simulierten Hardware?

Nein. Insbesondere die CPU Geschwindigkeit und der Hauptspeicher ist der deines Macs -- Du kannst also locker iPhone Prgramme im Simulator laufen lassen, die sich mal locker so ein GB an RAM reintun.

Der Simulator in 3.0 ist besser, aber der Simulator für 2.x ist mit grosser Vorsicht zu geniessen.

Alex
 
Na geil... :rolleyes:

Na dann muss ich wirklich so schnell wie möglich die App auf mein iPhone bekommen :rolleyes:
 
Was die Geschwindigkeit angeht, ja.

Den Speicherbedarf kannst Du aber mit ObjectAlloc oder MallocDebug prüfen

Alex
 
Zu Not kannste mir ja mal die Sources schicken und ich kanns mal direkt aufm Device für dich testen.
 
Das ist wirklich sehr nett, danke! Da komm ich evt. mal drauf zurück!
 
Oh ich könnt den Computer ausm Fenster werfen grad :faint:

Ich hab in XCode dieses Enable Guard Malloc aktiviert und jetzt gehts total ab. Die App läuft extremst träge und hängt sich immer wieder auf.

Mal ne dumme Frage: Ich habe halt eine navigation-based-application: Wenn ich in der Navigation einen Screen zurückgehe, wird dieser dann nicht autmatisch wieder freigegeben?

Soll heissen: Wenn ich 10 mal durch verschiedene Screens navigiert habe, werden die dann alle im Speicher behalten?
 
Oh ich könnt den Computer ausm Fenster werfen grad :faint:

Ich hab in XCode dieses Enable Guard Malloc aktiviert und jetzt gehts total ab. Die App läuft extremst träge und hängt sich immer wieder auf.

Mal ne dumme Frage: Ich habe halt eine navigation-based-application: Wenn ich in der Navigation einen Screen zurückgehe, wird dieser dann nicht autmatisch wieder freigegeben?

Soll heissen: Wenn ich 10 mal durch verschiedene Screens navigiert habe, werden die dann alle im Speicher behalten?

Natürlich musst du die Screens releasen.. pro View dass du erstellst musst du auch ein release anwenden (wenn es nicht mehr gebraucht wird) - sonst wirst du auf Dauer Probleme mit dem Speicher bekommen, und vor allem am iPhone ist jener sehr begrenzt.
Ausser du möchtest das View wiederverwenden, dann muss kein release ausgeführt werden.
 
Hi,

Ich lade einen ViewController so:

Code:
	leveloneController *anotherController = [[leveloneController alloc] initWithStyle:UITableViewStyleGrouped];
	anotherController.Name = [names objectAtIndex:[indexPath row]];
	anotherController.URL = [URLs objectAtIndex:[indexPath row]];
	anotherController.title = [forumNames objectAtIndex:[indexPath row]]; 

	[self.navigationController pushViewController:anotherController animated:YES];
	[anotherController release];

Und ich habe nur 4 Views die halt dynamisch geladen werden. Die Daten kommen dann halt immer aus einem Array dass im RootViewController liegt oder aus dem Internet mit NSUrlRequest. Da geb ich aber eigentlich auch immer alles frei.

Muss ich beim ViewDidDisappear z.B. das TableView einer View und solche Sachen freigeben?

Danke.
 
Muss ich beim ViewDidDisappear z.B. das TableView einer View und solche Sachen freigeben?

Selbstverständlich, alles was du nicht mehr brauchst muss freigegeben werden - automatisch passiert leider nichts ;)
 
hm.....also wie gesagt, ich bin eigentlich sicher, dass ich die Sachen schon immer freigebe...

Und das tableView eines NSTableViewControllers kann ich ja nicht einfach freigeben wenn der Benutzer die entsprechende View verlässt, sonst gibt es einen Absturz wenn dieselbe View wieder geladen wird. Und das self.tableView wird ja automatisch von der View instanziiert, ich erzeuge das zumindest nirgends...

Verdammt nochmal. Ich hoffe doch sehr, dass die Abstürze daran liegen dass ich vergesse Sachen freizugeben und nicht daran, dass das iPhone mit den Sachen die ich mache überfordert ist.

Ich lade mir halt z.B. eine Webseite in einen String, parse da ein paar Sachen heraus in ein Array (maximal 20-30 Einträge und jeweils nur ein String) und lasse dieses Array in einem TableView anzeigen.

Dann gibts noch ne andere Sache wo ich leider gezwungen bin eine HTML-Datei in einem String anzulegen (wieder mit Daten die aus einer Webseite geparst werden) und diese dann abzuspeichern, weil diese HTML-Datei von einem WebView dann wieder geladen und angezeigt wird. Da gibts leider keine bessere Möglichkeit dafür. Zumindest keine die ich kenne.

Und naja...am Ende des URLRequest geben ich den ganzen Kram der für den URLRequest gebraucht wurde immer wieder frei. Und natürlich auch die heruntergeladenen Daten. Das WebView gebe ich jetzt auch immer bei ViewDidDisappear frei, hat aber nichts geändert leider.

Aller Anfang ist schwer...ich programmiere erst seit einem Monat in XCode, jetzt seit einem Monat aber so richtig. Ich war einfach nur glücklich, dass die Sachen funktionieren und hab ganz vergessen mir um die Realisierbarkeit Gedanken zu machen.
 
Xcode, Großes X kleines c..... *SCNR*
 
Ich hab jetzt geschätze 2.000000 Suchergebnisse von Google über Guard Malloc gelesen aber eine eindeutige Antwort bekam ich nicht:

Was mich jetzt so niedergeschlagen hat war die tatsache, dass mit enable Guard Malloc die Anwendung verdammt langsam läuft.

Liegt das nur an Guard Malloc?

Crashes sind auch ein paar drin, aber die sind immer im Zusammenhang mit nicht vorhandenen Array-Inhalten. Das ist nicht so tragisch, weil ich dann weiss wo sie herkommen.
 
Was mich jetzt so niedergeschlagen hat war die tatsache, dass mit enable Guard Malloc die Anwendung verdammt langsam läuft.

Liegt das nur an Guard Malloc?

Ja. Warum verwendest Du Guard Malloc? Wenn Du nicht weisst, was das macht, dann benutze es nicht.

Ich habe nicht "Guard Malloc", sondern "Malloc Debug" gesagt -- beides macht die App langsamer, Guard Malloc aber besonders.

Alex
 
Zurück
Oben Unten