本文来自于CSDN博客,作者:韩俊强,已获授权,版权归原作者所有,未经作者同意,请勿转载。
欢迎同有博客好文章的作者加微信(ID:tm_forever_miss)或直接邮件(mobilehub@csdn.net)投稿、约稿、给文章纠错。
从事iOS开发有些年月了,从最开始的磕磕绊绊,不知所措,到现在的遇到困难都能快速做出最佳方案处理,中间经历了不可或缺的痛苦。在项目开发中,本人有用印象笔记记录的习惯,所以很多重复出现的坑,很快迎刃而解,而不在同一个地方摔倒两次。为此,特意总结了一下开发中经常遇到的坑,有些可能和你形成共鸣,有些在你看来或许是小儿科,不喜勿喷。
A valid provisioning profile forthis executable was not found.
解决问题所在:发布证书无法运行在真机上!!!
XCode8的项目在xcode7运行报错:
The document “ViewController.xib” requires Xcode 8.0 or later. This version does not support documents saved in the Xcode 8 format. Open thisdocumentwith Xcode 8.0 or later.
有两种方法解决这个问题:
你同事也升级Xcode8,比较推荐这种方式,应该迎接改变。
右击XIB或SB文件 -> Open as -> Source Code,删除xml文件中下面一行字段。
场景:tabbar左右pan手势切换,其中一个VC是UIPageViewController,这样会导致到pageView的时候不能切换tabbar,如何禁掉pageVC切换呢?
出于UIPageViewController和UItableView等产生手势冲突,我们往往要禁用其翻页手势,代码如下:self.pageViewController.dataSource = nil;
网络上搜到的重写手势等方法,亲测无效,所以给出这个最简单粗暴的方法。
// tabbar的切换动画(一般不用哦)
- (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; CATransition *transition = [CATransition animation]; [transition setDuration:1]; [transition setType:@"fade"]; [self.tabBarController.view.layer addAnimation:transition forKey:nil]; }
// 解决带有轮播图的手势冲突
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if (touch.view.frame.origin.y<100){ return NO; } return YES; }
//1,禁止.DS_store生成:
打开 “终端” ,复制黏贴下面的命令,回车执行,重启Mac即可生效。 defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
//2,恢复.DS_store生成:
defaults delete com.apple.desktopservices DSDontWriteNetworkStores
FMDB根据条件查询数据库出现的错误:
解决办法:
后台数据中出现空格特殊字符:
问题:注意选项A…我竟然匹配不到这种字符, \r\n\t都不行。
方案:中文全角空格…你想说什么…我转了下…\u3000 已解决!
取整问题:
//Objective-C拓展了C,自然很多用法是和C一致的。比如浮点数转化成整数,就有以下四种情况。
//1.简单粗暴,直接转化
float f = 1.5; int a; a = (int)f; NSLog("a = %d",a);
//输出结果是1。(int)是强制类型转化,丢弃浮点数的小数部分。
//2.高斯函数,向下取整
float f = 1.6; int a; a = floor(f); NSLog("a = %d",a);
//输出结果是1。floor()方法是向下取整,类似于数学中的高斯函数 [].取得不大于浮点数的最大整数,对于正数来说是舍弃浮点数部分,对于复数来说,舍弃浮点数部分后再减1.
//3.ceil函数,向上取整。
float f = 1.5; int a; a = ceil(f); NSLog("a = %d",a);
//输出结果是2。ceil()方法是向上取整,取得不小于浮点数的最小整数,对于正数来说是舍弃浮点数部分并加1,对于复数来说就是舍弃浮点数部分.
//4.通过强制类型转换四舍五入。
float f = 1.5; int a; a = (int)(f+0.5); NSLog("a = %d",a);
关于block传值及数据同步总结:
A B C三个界面间C界面修改内容达到AB界面刷新最新的数据保持ABC数据同步:1.C到B可以用block回调传值 2.B界面到A界面只需在B界面Back的时候发出拉取数据并刷新cell即可解决数据不同步现象。
//在iOS开发过程中, 我们可能会碰到一些系统方法弃用, weak、循环引用、不能执行之类的警告。 有代码洁癖的孩子们很想消除他们, 今天就让我们来一次Fuck 警告!!
//首先学会基本的语句
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations"
//这里写出现警告的代码
#pragma clang diagnostic pop
//这样就消除了方法弃用的警告!
iOS8调用相机警告:
错误代码:Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or
snapshot after screen updates.
IOS8多了一个样式UIModalPresentationOverCurrentContext,
IOS8中 presentViewController时请将控制器的modalPresentationStyle设置为 UIModalPresentationOverCurrentContext,问题解决!!
错误点: ENABLE_BITCODE错误设置(mrc下)
解决方法: