Maison > Article > développement back-end > Questions de développement iOS (1)
1. Définissez la taille d'ImagePicker
ImagePicker est toujours affiché à la taille par défaut dans le contrôleur Popover, et définir l'attribut popoverContentSize semble inutile. La solution consiste à "inclure" l'ImagePicker dans un ViewController personnalisé, puis à présenter le popover de ce ViewController :
UIViewController *containerController = [[UIViewController alloc] init]; containerController.contentSizeForViewInPopover = CGSizeMake(600,self.view.frame.size.height); [containerController.viewaddSubview:_imagePicker.view]; _popController= [[UIPopoverController alloc] initWithContentViewController:containerController]; CGPoint p=[self.view convertPoint:button.center fromView:sender.superview]; [_popController presentPopoverFromRect:(CGRect){p,CGSizeZero} inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; [_imagePicker.view setFrame:containerController.view.frame];// 很重要
Notez que la largeur du popover est d'au plus 600. De plus, _imagePicker doit être init une fois avant chaque presentPopoverFromRect, sinon la position d'affichage sera incorrecte.
2. Le problème des noms de fichiers chinois tronqués dans les fichiers téléchargés
Encodez le nom du fichier avec URL Encode sur le client iOS, puis utilisez URL Decode pour le décoder sur le serveur.
Client :
NSStringEncodingenc=NSUTF8StringEncoding; [request setData:datawithFileName [filename stringByAddingPercentEscapesUsingEncoding:enc] andContentType:@"application/octet-stream" forKey:key];
Serveur :
String filename=request.getParameter(“upload_file”); filename=URLDecode.decode(s,”utf-8”);
3. Appareil Mac 64 bits
Parfois, après la mise à jour du projet à partir de SVN, planifiez-le. apparaîtra comme un périphérique Mac 64 bits et ne permettra pas au programme de s'exécuter. Pour le moment, il vous suffit de réinitialiser le DeploymentTarget de Target (défini sur simulateur ou périphérique de débogage).
4. Supprimez le NSLog du débogueur
Le paramètre de compilation Optimize Level est défini selon différentes versions. Par exemple, la version Debug est Aucune et la version Release est la plus rapide, la plus petite. De cette façon, nous pouvons redéfinir la fonction NSLog en fonction de ce paramètre :
#ifndef __OPTIMIZE__ #define NSLog(...)NSLog(__VA_ARGS__) #else #define NSLog(...) {} #endif
5 Attention : aucun prototype précédent pour la fonction
Selon la spécification c, si la fonction n'en a pas. paramètres, utilisez void comme paramètre de fonction.
La déclaration de fonction doit utiliser "void functionA(void);" au lieu de "void functionA();".
Tri des tableaux
Méthode 1 :
- (NSComparisonResult)compare:(Person *)otherObject { return [self.birthDatecompare:otherObject.birthDate]; } NSArray *sortedArray; sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(compare:)];
Méthode 2 :
NSSortDescriptor *sortDescriptor; sortDescriptor = [[[NSSortDescriptor alloc]initWithKey:@"birthDate" ascending:YES] autorelease]; NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor]; NSArray *sortedArray; sortedArray = [drinkDetails sortedArrayUsingDescriptors:sortDescriptors];
Méthode 3 (10.6) :
NSArray *sortedArray; sortedArray = [drinkDetails sortedArrayUsingComparator:^(id a, id b) { NSDate *first =[(Person*)a birthDate]; NSDate *second =[(Person*)b birthDate]; return [firstcompare:second]; }];
7. Où se trouve le répertoire de construction de Xcode 4 ?
Xcode 4 a apporté de nombreuses modifications. Vous ne pourrez pas trouver le répertoire de construction et vous ne pourrez pas trouver le groupe de fichiers Produits. Alors, où place-t-il le fichier exécutable généré après la compilation du projet ? La réponse est le répertoire "{USERNAME}/Library/Developer/Xcode/DerivedData/{PROJECT_NAME_AND_RANDOM_CRAP}/Build/Products/{BUILD_TYPE}/{PROJECT_NAME}.app".
Attention : aucune règle pour traiter le fichier
Xcode essaie de détecter chaque type de fichier. Lorsqu'il pense qu'un fichier est de type « fichier source » (comme un fichier .js), il essaie toujours de l'ajouter à Compile Sources et essaie de le compiler. La solution à cet avertissement consiste à déplacer ces fichiers des sources de compilation des phases de construction vers les ressources de copie du bundle.
9. Attention : 'initWithFrame:reuseIdentifier:'est obsolète
Cette méthode sera abandonnée dans les versions ultérieures. Veuillez utiliser
- initWithStyle:reuseIdentifier:
10. itms-services ne fonctionne pas
itms-services est reconnu par Apple/iphone comme un mot spécial. Il vérifiera le certificat spécifié dans le profil d'approvisionnement et l'installera. il. .
Avant d'installer ce fichier .ipa, vérifiez le profil professionnel, qui sera connecté à "ax.init.itunes.apple.com" et "ocsp.apple.com".
Si vous êtes sur un intranet, merci de vérifier si l'adresse ci-dessus est accessible. Sinon, vous ne pourrez pas utiliser OTA pour installer l'application. Nécessite iOS 4.0 ou supérieur.
Remarque : l'impossibilité d'accéder à l'adresse ci-dessus n'affectera pas l'installation. Cependant, iOS vérifiera si le certificat est légal via l'adresse ci-dessus au moment de l'exécution. Si l'installation est légale, iOS mettra en cache les résultats de la vérification (7 jours).
Ce qui précède est le contenu des questions de développement iOS (1). Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !