Questions de développement iOS (6)

黄舟
Libérer: 2023-03-05 06:38:01
original
1571 Les gens l'ont consulté

61. Avertissement « ajoutez des accolades explicites pour éviter de suspendre else »
Le soi-disant « else dangereux » est un code similaire à celui-ci :
i

f(a== 10)
printf("TEN");
else
printf("NOT TEN");
a = 100;
Copier après la connexion

Le compilateur pense que votre clause else est La sémantique n'est pas claire. Que veux-tu dire ? Que a soit égal ou non à 10, a doit se voir attribuer une valeur de 100 après l'exécution de if, ou souhaitez-vous uniquement qu'une valeur de 100 soit attribuée à a dans la clause else (c'est-à-dire lorsque a n'est pas égal à 10 ) ?
Si c'est la première solution, la bonne façon de l'écrire devrait être :

if(a== 10) {
printf("TEN");
}else{
printf("NOT TEN");
}
a= 100;
如果是后者,正确的写法应该是:
if(a== 10) {
printf("TEN");
}else{
printf("NOT TEN");
a = 100;
}
Copier après la connexion

Bien sûr, pour le compilateur c/c/java, ce n'est qu'un petit problème et ne le sera pas entraîner un échec de compilation. Le compilateur préfère en fait le premier cas et gère automatiquement le premier cas. Mais il vous avertira qu'il s'agit d'un mauvais style de codage. Vous pouvez ignorer cet avertissement avec la macro "-Wswitch" ignorée par le diagnostic #pragma clang, ou définir l'option de compilation MissingBraces and Parentheses sur NON.
62. Le simulateur iPad n'affiche pas le bouton Accueil
A partir de Xcode 4.3, afin d'obtenir plus d'espace disponible pour l'utilisateur, le simulateur iPad n'affiche pas le bouton Accueil. Vous pouvez remplacer le bouton Accueil via le menu "Matériel > Accueil" ou la touche de raccourci ⇧⌘H.
63. Novisible @interface for 'NSURL' déclare le sélecteur 'query'
Dans iOS6, cette méthode est abandonnée, veuillez utiliser les paramètres NSURL à la place.
64. L'identité du certificat 'distribution iPhone' apparaît plus d'une fois
Il s'agit d'une erreur de certificat en double. Vous devez supprimer les certificats en double dans le trousseau avant que la compilation puisse réussir. Cependant, si vous redémarrez Xcode, vous constaterez que le certificat précédemment supprimé est de retour. Mais lorsque Xcode est redémarré, le certificat dans Xcode sera importé dans le trousseau, donc la simple suppression du certificat en double dans le trousseau est inefficace.
Je crois que de nombreux étudiants sont dégoûtés par ce bug dans Xcode, mais il n'y a pas d'autre moyen que de supprimer à plusieurs reprises (mais en vain) le certificat du trousseau. En fait, nous ne pouvons pas blâmer Xcode seul, mais cela a aussi quelque chose à voir avec « l’outil utilitaire de configuration iPhone ».

Ces certificats "résiduels" dans Xcode n'existent pas sous forme régulière. Si vous installez "iPhone Configuration Utility", ces certificats existent en fait dans les fichiers .app du répertoire /Users/km-cn/Library/MobileDevice/Applications/. Ces .apps sont en fait "iPhone Configuration Utility" ——L'importé. l'application dans "Applications". Vous pouvez utiliser le Finder - "Afficher le contenu du package" pour afficher le .app. L'un des fichiers nommés « embedded.mobileprovision » est un certificat en double « résiduel ». Vous pouvez supprimer ces .apps un par un, ou simplement supprimer tous les .apps du répertoire (de toute façon, tant que le fichier projet existe, vous pouvez compiler ces .apps à tout moment et les importer dans "l'utilitaire de configuration iPhone") . Enfin, supprimez les certificats en double dans Orgnizer et redémarrez Xcode.
65. Identifiant d'application 'com. ydtf.*' qui ne correspond pas au paramètre actuel 'com.ydtf.dlt'
Comme vous pouvez le voir, ces deux identifiants d'application correspondent définitivement (* représente un caractère générique) . Mais cette erreur inexplicable vous empêchera de compiler. Il s'agit certainement d'un autre bug dans Xcode, modifiez d'abord CodeSigning en Don't Code Sign, Build, puis modifiez-le à nouveau avec la signature correcte Build.
66. L'identité utilisée pour signer l'exécutable n'est plus valide
En raison du problème de signature précédent, il ne peut pas être archivé. Voir la question 65 pour la solution.
67. Utilisez presentModalViewController pour définir la taille de la fenêtre contextuelle sur iPad

TestViewController*testVC = [[TestViewController alloc] initWithNibName:@"TestViewController"bundle:nil];
testVC.modalPresentationStyle= UIModalPresentationFormSheet;
testVC.modalTransitionStyle= UIModalTransitionStyleCrossDissolve;
[selfpresentModalViewController:testVC animated:YES];
testVC.view.superview.frame= CGRectMake(0, 0, 649, 397);//it's important to do this afterpresentModalViewController
testVC.view.superview.center = self.view.center;
Copier après la connexion

Remarque : //il est important de le faire après presentModalViewController. Autrement dit, vous devez définir la taille du cadre après [selfpresentModalViewController:testVCanimation:YES];!

68. Personnalisez les boutons ActionSheet et les directions des flèches Popover sur iPad.
ActionSheet s'affiche en mode Popover sur iPad. Le CancelButton ne sera pas affiché par défaut (le SDK utilise la zone en dehors du Popover au lieu du CancelButton. Tant que l'utilisateur clique sur la zone en dehors du Popover, cela équivaut à cliquer sur le bouton Annuler). Si vous lancez une ActionSheet comme ceci :

UIActionSheet* sheet=[[UIActionSheet alloc]initWithTitle:nil
delegate:self
cancelButtonTitle:@"cancel"
destructiveButtonTitle:@"ok"
otherButtonTitles:nil];
Copier après la connexion

, alors seul le destructiveButton rouge sera affiché à la fin.
Si vous devez afficher le CancelButton, vous pouvez faire ceci :

UIActionSheet* sheet=[[UIActionSheet alloc]initWithTitle:nil
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:@"cancel",@"ok",nil];
// sheet.cancelButtonIndex=0;
sheet.destructiveButtonIndex=1;
Copier après la connexion

Après avoir spécifié le destructiveButtonIndex, le bouton s'affiche en rouge.

Mais ne spécifiez jamais CancelButtonIndex, car CancelButton sera supprimé sur iPad.
Sur iPad, le SDK ne fournit pas d'API permettant de modifier la direction de la flèche d'actionSheet. Le système détermine automatiquement la direction de l'affichage de la flèche. Mais on peut utiliser le premier paramètre de showFromRect pour changer la direction de la flèche :

CGRect r=sender.bounds;
r.size.width=2*self.view.bounds.size.width;
r.origin.x=-self.view.bounds.size.width+sender.bounds.size.width/2+sender.frame.origin.x;
[sheet showFromRect:r inView:sender animated:YES];
Copier après la connexion

Cela remplacera la flèche gauche d'origine par une flèche vers le haut.

En fait, la logique d'iOS pour juger de la direction d'action du pop-up est très simple. Partout où il y a "suffisamment" d'espace, il apparaîtra là. Lorsque nous utilisons le premier paramètre de showFromRect pour "bloquer" les trois directions, il ne peut apparaître que dans la direction souhaitée.
69. setShowAccurateProgress=YES ne fonctionne pas dans ASINetworkQueue
Ajoutez request.showAccurateProgress= YES avant networkQueue.showAccurateProgress= YES, sinon showAccurateProgress ne prendra pas effet. Exemple de code :

equest.showAccurateProgress=YES;
networkQueue.showAccurateProgress=YES;
[networkQueue setSuspended:YES];
[networkQueue addOperation:request];
networkQueue.uploadProgressDelegate=self;
[networkQueue go];
Copier après la connexion

此外,由于 CFNework 中的一个 Bug,对于小于128K的数据,无法跟踪其上传/下载的精确进度。
70、如何设置 UIWebView 背景色为透明?
在IB中设置 UIWebView 的 Background 属性为 Clear Color 并不能使其背景透明。要达到这个目的,你需要使用以下两句:

[webView setBackgroundColor:[UIColor clearColor]];[webView setOpaque:NO];
Copier après la connexion

以上就是iOS 开发百问(6)的内容,更多相关内容请关注PHP中文网(www.php.cn)!




Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!