2013-12-12 12 views
7

Ich habe ein seltsames Problem mit einer Phonegap iOS App. Ich habe eine Version ohne Werbung genehmigt und funktioniert gut im App Store und eine neue Version mit Werbung, die aufgrund der App auf dem Begrüßungsbildschirm abgelehnt wurde.WARNUNG: Langsame Standardzugriffe für Schlüssel Intern dauerte xx Sekunden, Toleranz ist 0.020000

Der Unterschied in den Apps ist 3 Ad-Plugins, iAD, Admob und Revmob. Die App funktioniert meistens gut, aber manchmal wird sie auf dem Begrüßungsbildschirm hängen bleiben, wie das Feedback von Apple andeutet. Ich kann nicht herausfinden, was das Problem verursacht.

Der einzige Hinweis, den ich habe, ist "WARNUNG: Langsame Standardzugriffe für Schlüssel Intern dauerte 0,039977 Sekunden, Toleranz ist 0,020000" erscheint in der Fehlerkonsole, aber wenn dies erscheint, läuft die App immer noch gut.

Bezieht sich diese Warnung wahrscheinlich auf das Problem mit dem Startbildschirm? Irgendwelche Ideen, wie man sich dem Problem nähert oder nach was es suchen könnte, verursacht es?

Dank

+0

Stellen Sie sicher, Mach keine Berechnungen bevor die App wirklich startet. Wenn es zu lange dauert, wird die App vom Betriebssystem zum Absturz gezwungen. Wenn Sie etwas tun müssen, das ein paar Sekunden dauert (zB kopieren Sie eine große Datei das erste Mal) tun Sie es in Ihrer ersten VC nach ViewDidLoad (oder in ViewDidLoad in einer Methode von performSelector aufgerufen: afterDelay: .1) – Daniel

Antwort

1

Ich glaube nicht, dass dies der Grund ist, und Sie werden wahrscheinlich diese auf dem Simulator bekommen, die nicht so effizient wie das Gerät ist.

Der Grund für die verspätete Starts 90% der Zeit ist etwas, das Sie in AppDelegate tun, genauer gesagt in

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

Vermeiden Sie tun langwierige Aufgaben dort, wie Netzwerkverbindungen oder große Daten manipulieren und wenn Sie müssen noch etwas tun gibt und es zu Ihrem viewDidLoad Methode bewegen kann leider nicht wie so in einem anderen Thread tun es:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
// Override point for customization after application launch. 
[self performSelectorInBackground:@selector(fetchUserInfoFromDB) withObject:nil]; 


return YES; 
} 

-(void)fetchUserInfoFromDB 
{ 
//Do what you need to do in here 
sleep(5); 
NSLog(@"The app lanuched but I am still running in the background, Yay!!"); 

} 

Best of luck

+0

Ops, ich gerade Ich habe den PhoneGap-Teil bemerkt, von dem ich annehme, dass er die Binärdatei für Sie generieren würde, wenn Sie keine Kontrolle über den Code haben. Wie auch immer, ich hoffe, meine Antwort würde anderen helfen, die sich diesem Problem stellen würden, wenn sie ihre Apps mit xcode und objective c entwickeln würden –