J'ai une application qui exécute un algorithme de synchronisation. Lorsque je compile et que je l'exécute en mode débogage (sur mon iPhone 5), tout fonctionne correctement.Différence entre le débogage et la publication
Cependant, lorsque je l'archive et le télécharge sur TestFlight, puis le télécharge et l'installe sur le même iPhone 5, une partie de la synchronisation ne fonctionne pas.
Il ne plante pas ou quoi que ce soit, il n'exécute tout simplement pas cette partie de la synchronisation. La chose stupide est que c'est une ligne de code à l'intérieur d'une seule fonction qui n'est pas en cours d'exécution. Tout le reste dans cette fonction s'exécute.
Je n'ai aucune idée par où commencer à chercher cela.
EDIT
Avec l'aide de Mindaugas que j'ai trouvé exactement pourquoi et quel bit de code n'est pas en cours d'exécution.
La fonction est ...
- (void)uploadData
{
NSLog(@"pushing photos");
for (StoredImage *storedImage in self.recordArray) {
NSURL *url = [self urlForImageUpload:storedImage];
if (url == nil) {
continue;
}
ImageUploadOperation *uploader = [[OJFImageUploadOperation alloc] init];
uploader.image = storedImage.image;
uploader.url = url;
[self.recordQueue addOperation:uploader];
}
}
Quand je mets le niveau d'optimisation pour « le plus rapide, le plus petit », il semble gâcher l'ordre de cette fonction vers le haut.
Quand il entre je peux voir qu'il y a un seul objet dans le tableau et qu'il entre dans la boucle. Mais alors, il saute complètement la première ligne NSURL *url = [self urlForImageUpload:storedImage];
et va à la fin. Le téléchargement ne démarre donc jamais et passe à l'élément suivant.
Ma seule pensée est que si l'appel est à l'intérieur d'une méthode NSAssert, il se transformera en un no-op. – borrrden
Votre application a-t-elle le privilège d'effectuer une telle opération? –
Je n'utilise pas NSAssert à ce stade. J'ajoute juste quelques points de contrôle TestFlight pour savoir exactement quel bit n'est pas exécuté. – Fogmeister