Questions de développement iOS (5)

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

42. Avertissement : commandes Multiplebuild pour le fichier de sortie
La cible fait référence à une ressource avec un nom en double
Recherchez la cible actuelle, développez-la, recherchez la colonne CopyBundle Resources, puis recherchez la ressource avec le nom en double. et supprimez celui qui n'est pas nécessaire. C'est tout
43. Erreur de signature : le profil de provisionnement est introuvable
Dans Xcode, lorsque vous mettez à jour votre certificat puis recompilez votre programme, Erreur de signe de code : le provisionnement apparaîtra toujours pendant la durée réelle. le débogage de la machine. Le profil 'XXXX' est introuvable vous ennuiera. Parlons de la solution ci-dessous afin que vous puissiez bien résoudre ce problème.
1. Fermez votre projet, recherchez le fichier du projet XXXX.xcodeproj, faites un clic droit sur le fichier et sélectionnez "Afficher le contenu du paquet". Un nouveau Finder s'ouvrira. Remarque : En fait, XXXX.xcodeproj est un dossier. Les trois fichiers du Finder nouvellement ouvert ici sont les fichiers du dossier XXXX.xcodeproj.
2. Recherchez project.pbxproj dans le Finder nouvellement ouvert et ouvrez-le. Trouvez ici les informations de codage de votre précédent certificat. Le message d'erreur que j'ai signalé auparavant était :
Erreur CodeSign : profil d'approvisionnement '37D44E7F-0339-4277-9A82-C146A944CD46', j'ai donc utilisé la méthode de recherche pour trouver toutes les lignes, y compris 37D44E7F-0339-4277-9A82-C146A944CD46. et supprimer.
3. Enregistrez, redémarrez votre projet et compilez à nouveau. C'est OK.
44. Après la mise à niveau vers Xcode 4.6, arc4random_uniform n'est pas disponible
Lorsque le projet est mis à niveau vers Xcode4.6, une erreur de compilation se produit :

Useof undeclared identifier 'arc4random_uniform'; did you mean 'arc4random_stir'?
Copier après la connexion

Il semble que le SDK 6.1 le fasse. ne prend pas en charge 'arc4random_uniform', le problème a été résolu après l'avoir remplacé par 'arc4random'.
45. Après la mise à niveau de Xcode4.6, une erreur de compilation s'est produite : Symboles non définis pour l'architecture x86_64 : "_OBJC_CLASS_$_NSMutableOrderedSet"
Dans les paramètres de construction, définissez "Lier implicitement la prise en charge d'Objective-C Runtime" sur NON, et le problème est résolu.
46. Après la mise à niveau de Xcode4.6, un avertissement est apparu : la fonction "veille" n'est pas valide dans C99
#import Après la mise à niveau vers Xcode4.6, de nombreux fichiers d'en-tête ne sont pas automatiquement importés par défaut, tels que stdlib.h et unistd.h.
47. Erreur de compilation : mise en page automatique sur les versions iOS antérieures à 6.0
Ce problème se produit lors de la compilation de l'application Target 4.0 dans Xcode 4.6 (débogage de la machine réelle, l'appareil est 3GS, mis à niveau vers iOS 6.1.3). Recherchez le fichier .xib qui a signalé l'erreur et désactivez « UseAutolayout » (voir la figure ci-dessous) dans le panneau Document.

48. Comment définir l'alignement du texte du bouton TitleLabel ?
Définissez l'attribut contentHorizontalAlignment :
emailBtn.contentHorizontalAlignment= UIControlContentHorizontalAlignmentLeft;
Ou utilisez contentEdgeInset pour ajuster les marges du texte (0 signifie pas d'alignement) :
emailBtn.contentEdgeInsets= UIEdgeInsetsMake(0, 10, 0, 0) ;
Ou utilisez les deux ensemble.
49. Erreur : errorDomain=UA_ASIHTTPRequestErrorDomain Code=8 "Échec du déplacement du fichier depuis
L'erreur se produit après le téléchargement du fichier ; mais avant que le fichier ne soit déplacé avec succès de l'emplacement tmp vers l'emplacement du cache
Le fichier est téléchargé dans un fichier temporaire, mais avant d'être déplacé vers le répertoire des documents (vous pouvez utiliser iExplorer pour vérifier l'existence du fichier temporaire
Utilisez "[requestsetShouldAttemptPersistentConnection:NO];" Erreur de compilation : "a été modifié depuis la construction de l'en-tête précompilé"

Le fichier a été modifié lorsque l'en-tête a été précompilé. Nettoyer puis recompiler
Erreur Impossible de modifier les autorisations exécutables sur l'application<. 🎜>Ne peut pas être utilisé. L'installation de deux applications différentes avec le même AppID sur l'iPhone entraîne généralement des problèmes lors de l'exécution de la commande Projet -> Profil dans Xcode. En effet, une application de débogage est généralement installée sur l'iPhone lors du débogage de l'appareil réel. le projet est exécuté > Profil, puis réinstallez le programme sur l'iPhone. Les AppID des deux programmes sont naturellement les mêmes, donc l'erreur ci-dessus se produit. Solution : supprimez d'abord le programme sur l'iPhone, puis exécutez-le. la commande Projet-->Profil

52. Erreur d'instruments : échec de l'exécution, comme indiqué ci-dessous.



点击菜单栏Scheme 的左下角,选择“Edit Scheme...”,在弹出窗口左侧边栏选中“Profile xxx.app”,将其“BuildConfiguration”从“Release”修改为 “Debug”。
53、查看指针所指向的对象
如果知道地址,可以用GDB命令打印该地址所代表的对象,例如:
po 0x1fba2e20
如果该指针不是一个对象,用:
p0x1fba2e20
54、Xcode 打包时 skip install的问题
总结:在自身工程里面需要将skipinstall 设置为NO, 在引入其他静态库文件的工程中skip install 设置为YES,否则在 Orgnizer 中无法发布你的程序。
-主App是需要部署的,所以不要将Skip Install设为YES, 只需要改依赖项目。
55、错误: Pushinga navigation controller is not supported
SDK不允许直接在一个 NavigationController 中 push 一个 NavigationController。你可以用这句代码代替:
[self.navigationControllerpushViewController:nc.topViewController animated:YES];
56、为什么当用户点击Tab bar 上的按钮,总是会显示所选 NavigationController 的 rootViewController?
你可以为TabBarController 指定一个delegate 属性,并在 delegate 对象中实现 UITabBarControllerDelegate 委托:

#pragma mark TabBarController Delegate
- (BOOL)tabBarController:(UITabBarController *)tabBarControllershouldSelectViewController:(UIViewController *)viewController {
UIViewController *tbSelectedController= tabBarController.selectedViewController;
if ([tbSelectedController isEqual:viewController]) {
return NO;
}
return YES;
}
Copier après la connexion

57、使用setTitle 不能刷新 NavigationBar 的标题文本
有时候使用ViewController的 setTitle 方法并不能刷新 NavigationBar 的 title文本。极大的可能是你使用类似的代码定制了 titleView:

UILabel* label = [[[UILabel alloc] init] autorelease];
label.backgroundColor=[UIColor clearColor];
label.text = self.title;
label.font = [UIFont systemFontOfSize: 20];
……
[self.navigationItem setTitleView: label];
Copier après la connexion

如果这样,你需要用同样的代码重新定制titleView,才能刷新 NavigationBar title。或者,使用默认的 TitleView 而不要去定制它。
58、 nested push animation can result in corrupted navigation bar……
如果你在代码中连续多次(两次以上)pushViewController,会出现以上信息,这既不是错误也不少警告,只是控制台输出的信息,但它会导致一些潜在的问题,比如NavigationController 的栈错误(比如用户有时候必须连按两次 backButton 才能返回上级视图)。往往还会伴随有如下信息的输出:
Unbalancedcalls to begin/end appearance transitions
所谓连续多次,是指至少有一次push 是不经过用户交互而直接代码调用的。例如,当用户点击一个 TableViewCell,弹出一个 ViewController,然后在这个ViewController 的 viewDidLoad 方法或 viewWillAppear 方法中用代码 Push 另一个 ViewController。这第二次push 并不是由用户动作而是由代码触发的,因此会导致上述问题。
解决办法是,在第二次push 时,将 animated 参数设置为 NO。
59、真机可以执行,模拟器不行
有时候出现模拟器不能调试的情况,程序一运行就退出,而且模拟器似乎“卡死”掉了,只出现一个黑黑的窗口,按Home键也没有作用。但是在真机上程序却可以运行。这个问题的原因未知,但有一个解决方式是:在另一个工程中打开模拟器,然后在模拟器中把有问题的程序删除即可。
60、警告“numeration not handledin switch”
新的Apple LLVM compiler 4.0中,会对 switch 变量进行检查,如果该变量为枚举类型,则需要处理所有的枚举值,你可以添加一个 default:break;语句表示所有未列举的枚举值已处理。或者将编译选项"Check switch statements"设置为NO。也可以用下列宏忽略switch 检查:

#pragmaclang diagnostic push
#pragmaclang diagnostic ignored "-Wswitch"...<switchstatment>...
#pragmaclang diagnostic pop
Copier après la connexion


以上就是iOS 开发百问(5)的内容,更多相关内容请关注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