61、警告“addexplicit braces to avoid dangling else”
所谓“危险的else”是类似这样的代码:
i
f(a== 10)printf("TEN");elseprintf("NOT TEN");a = 100;
编译器认为你的else 子句导致语义不清,你到底是什么意思?是无论 a 是否等于10 , if 执行完之后都要将 a 赋值为100,还是只想在 else 子句(即 a 不等于10 的时候)中将 a 赋值为 100?
如果是前者,正确的写法应该是:
if(a== 10) {printf("TEN");}else{printf("NOT TEN");}a= 100;如果是后者,正确的写法应该是:if(a== 10) {printf("TEN");}else{printf("NOT TEN");a = 100;}
当然,对于c/c++/java 编译器来说,这只是一个小问题,并不会导致无法编译。编译器实际上是倾向于前者的,它自动按第一种情况处理。但它会警告你这是一种不好的代码风格,你可以用#pragma clang diagnostic ignored "-Wswitch" 宏忽略该警告,或者将编译选项 MissingBraces and Parentheses 设置为 NO。
62、iPad模拟器不显示 Home 键
从Xcode 4.3 开始,为了获得更大的用户可用空间,iPad 模拟器不显示 Home 键。 你可以通过菜单“ 硬件 > 首页”或者快捷键⇧⌘H 来代替 Home 键。
63、Novisible @interface for 'NSURL' declares the selector 'query'
iOS6 中,该方法被抛弃,请用 NSURL+Parameters 替代。
64、certificateidentity 'iphone distribution' appears more than once
这是证书重复的错误,需要将钥匙串里重复的证书删掉编译才能通过。但是,如果你重启Xcode ,会发现之前删除的证书又回来了。但当重新启动Xcode时,Xcode里的证书会被导进钥匙串,所以仅仅是删除钥匙串中重复证书是无效的。
相信 许多同学对 Xcode 的这个 Bug 深恶痛绝了,但除了反复地(但是徒劳地)从钥匙串中删除证书,也没有别的办法了。其实,也不能光怪 Xcode,而是跟”iPhone 配置使用工具“也有一定的关系。
Xcode中的这些“残留”证书不以常规的形式存在。如果你安装了“iPhone 配置实用工具”,这些证书实际上存在于/Users/km-cn/Library/MobileDevice/Applications/目录下的.app 文件中,这些.app 实际上是 “iPhone配置实用工具”——“应用程序”中的所导入的 app。你可以用Finder ——来4源gaodaimacom搞#代%码*网搞代gaodaima码
“显示包内容”来查看.app 。其中一个名叫“embedded.mobileprovision”的文件,就是“残留”的重复证书。你可以逐一删除这些 .app,也可以干脆把该目录下的所有.app 都删除(反正只要项目文件存在,你随时可以编译出这些 .app并导入到“iPhone 配置实用工具”中)。最后,还要将 Orgnizer 中的重复证书也删除,然后重启Xcode。
65、Application Identifier 'com. ydtf.*' which doesn't match the current setting'com.ydtf.dlt'
如你所见,这两个Application ID 绝对是匹配的(*表示通配符)。但这个莫名的错误会导致你始终不能编译。这绝对是 Xcode 的另一个 Bug,先将 CodeSigning 修改为 Don't Code Sign,Build,然后再修改回正确的签名 Build。
66、Theidentity used to sign the executable is no longer valid.
由于前面的签名问题导致不能Archive。解决方式见问题 65。
67、在iPad 中使用 presentModalViewController 设置弹出窗口的大小
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 afterpresentModalViewControllertestVC.view.superview.center = self.view.center;