iOS 开发百问(6)
61、警告“addexplicit braces to avoid dangling else”
所谓“危急的else”是相似这种代码:
if(a== 10)
printf("TEN");
else
printf("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 ——“显示包内容”来查看.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 afterpresentModalViewController
testVC.view.superview.center = self.view.center;
注意://it'simportant to do this after presentModalViewController。
即一定要在[selfpresentModalViewController:testVC animated:YES];之后设置frame的大小!
68、在iPad 中定制 ActionSheet 的button和Popover 箭头方向。
ActionSheet在 iPad 上以Popover的方式显示。默认不会显示cancelButton(SDK用Popover之外的区域取代cancelButton,用户仅仅要点击Popover之外的区域就等同点击取消button)。假设你这样init一个ActionSheet:
UIActionSheet* sheet=[[UIActionSheet alloc]initWithTitle:nil
delegate:self
cancelButtonTitle:@"cancel"
destructiveButtonTitle:@"ok"
otherButtonTitles:nil];
则终于仅仅有红色的destructiveButton 会显示。
假设你非要显示cancelButton,则能够这样干:
UIActionSheet* sheet=[[UIActionSheet alloc]initWithTitle:nil
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:@"cancel",@"ok",nil];
// sheet.cancelButtonIndex=0;
sheet.destructiveButtonIndex=1;
指定destructiveButtonIndex之后,该button被显示为红色。
但千万不要指定cancelButtonIndex,因为在iPad上cancelButton会被移除。
在iPad中,SDK没有提供能够改动 actionSheet 的箭头方向的API,系统自己主动推断箭头显示的方向。
但我们能够利用showFromRect的第1个參数来改变箭头的方向:
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];
这样就将原来的左箭头,换成了上箭头。
事实上iOS 在推断 actionSheet 弹出方向时的逻辑非常easy,哪边有“足够”的空间,它就往哪边弹出。当我们利用showFromRect的第1个參数将3个方向都“堵死”后。它就仅仅能老老实实地从我们想要的方向弹出了。
69、在 ASINetworkQueue 中 setShowAccurateProgress=YES 不起作用
在 networkQueue.showAccurateProgress= YES之前增加 request.showAccurateProgress= YES ,否则showAccurateProgress 不会生效。演示样例代码:
equest.showAccurateProgress=YES;
networkQueue.showAccurateProgress=YES;
[networkQueue setSuspended:YES];
[networkQueue addOperation:request];
networkQueue.uploadProgressDelegate=self;
[networkQueue go];
此外,因为 CFNework 中的一个 Bug,对于小于128K的数据,无法跟踪其上传/下载的精确进度。
70、怎样设置 UIWebView 背景色为透明?
在IB中设置 UIWebView 的 Background 属性为 Clear Color 并不能使其背景透明。要达到这个目的,你须要使用下面两句:
[webView setBackgroundColor:[UIColor clearColor]];
[webView setOpaque:NO];
iOS 开发百问(6)的更多相关文章
- iOS 开发百问(5)
42. 警告:Multiplebuild commands for output file target引用了名字反复的资源 找到当前的target,展开之后.找到CopyBundle Resourc ...
- k3 Bos开发百问百答
K/3 BOS开发百问百答 (版本:V1.1) K3产品市场部 目录 一.基础资料篇__ 1 [摘要]bos基础资料的显示问题_ 1 [摘要]单 ...
- iOS开发中訪问相冊摄像像头
iOS开发中訪问相冊摄像像头 源代码下载地址http://download.csdn.net/download/jingjingxujiayou/7270479 在AppDelegate.m文件里 - ...
- fir.im Weekly - 给女朋友的 iOS 开发教程
俗话说:技多不压身,功到自然成.本期 fir.im Weekly 收集的热度资源,大部分关于Android.iOS 开发工具和源码,还有一些有关设计的 Tips ,希望对你有帮助. 给女朋友的 iOS ...
- 李洪强iOS开发之【零基础学习iOS开发【01-前言】03-前景和难易度分析
一.iOS开发的前景 2012年3月份,苹果公司的市值已经突破5000亿美元,成为世界上市值最大的公司.5000亿是神马概念呢? 可以帮助陷入欧债危机的8个国家偿还债务 可以买下35个天安门广场.34 ...
- iOS 开发常用的调试工具
前言 最近博主临近毕业季,为了完美的写一篇毕业论文,真是:“锄禾日当午,汗滴禾下土”<—— 这句诗跟毕业我写毕业论文没任何一毛钱关系,我就是突然想吟湿了.不过博主作为网络工程专业的好青年,曾经的 ...
- ios开发中的小技巧
在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...
- iOS开发之使用Runtime给Model类赋值
本篇博客算是给网络缓存打个基础吧,本篇博客先给出简单也是最容易使用的把字典转成实体类的方法,然后在给出如何使用Runtime来给Model实体类赋值.本篇博客会介绍一部分,主要是字典的key与Mode ...
- iOS开发之各种动画各种页面切面效果
因工作原因,有段时间没发表博客了,今天就发表篇博客给大家带来一些干货,切勿错过哦.今天所介绍的主题是关于动画的,在之前的博客中也有用到动画的地方,今天就好好的总结一下iOS开发中常用的动画.说道动画其 ...
随机推荐
- TimeUnit
转http://blog.csdn.net/hudashi/article/details/6936604 public enum TimeUnitextends Enum<TimeUnit&g ...
- 扩展 Windows Azure 运营能力 – 巴西
今天早些时候,在巴西圣保罗的一个活动上,我宣布了我们将在巴西设立一个 Windows Azure 区域数据中心的计划.我们希望该区域中心可以在 2014 年年初上线,并且我们很高兴地宣布将在未来 4 ...
- windows下apache如何完整卸载?
1.运行services.msc,在服务中停止 apache 服务.2.运行命令行程序,输入 sc delete apache,删除该服务3.删除apache文件夹.
- 通过DWR简化AJAX开发
DWR(Direct Web Remoting)是一个WEB远程调用框架,采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScrip ...
- Linux服务器使用SSH的命令(有详细的参数解释)
前一阵远程维护Linux服务器,使用的是SSH,传说中的secure shell. 登陆:ssh [hostname] -u user 输入密码:***** 登陆以后就可以像控制自己的机器一样控制它了 ...
- Eclipse相关集锦第二季
Eclipse相关的问题第二季开始了,这些问题都是我平时遇到的,然后记录下来备忘,帮助到别人最好不过了. 1.Unable to execute dex: GC overhead limit exce ...
- Swift - 经纬度位置坐标与真实地理位置相互转化
通过CoreLocation类,得到的定位信息都是以经度和纬度等表示的地理信息,通过CLGeocoder类可以将其反编码成一个地址.反之,也可根据一个地址获取经纬度. 1,通过经纬度获取地址 1 2 ...
- android录音功能的实现
这个录音实现是我在Bus上看到并下载的,他那个源码不完整,再次把我整理完整的代码贴出,源码地址在这:http://download.csdn.net/detail/chaozhung/5618649 ...
- MySQL里求给定的时间是所在月份的第几个礼拜
Share 一个昨天写的函数. 目的是求给定的时间是所在月份的第几个礼拜. DELIMITER $$ USE `t_girl`$$ DROP FUNCTION IF EXISTS `weekofmon ...
- Windows Azure入门教学系列 (八):使用Windows Azure Drive
我们知道,由于云端的特殊性,通常情况下,对文件系统的读写建议使用Blob Storage来代替.这就产生了一个问题:对于一个已经写好的本地应用程序,其中使用了NTFS API对本地文件系统读写的代码是 ...