『IOS』 遇到问题记录(长期更新)
遇到的很多问题,解决后都是自己记着,以为不会忘记,之后却会想不起来了。
所以把今后解决的问题记录在这。
一.
在二级页面设置了CAlayer的代理,在返回一级页面报错:
EXC_BAD_ACCESS(code=EXC_I386_GPFLT) :野指针,访问了一块不属于你的内存
因此delegate需要显示的释放 (释放顺序从外层到里层)
-(void)dealloc{
{
layer.delegate = nil;//都得写在父类方法调用前
//[super dealloc]; //ARC下 不需要调用父类方法,系统默认自动调用
}
二.
枚举值 与 字符串 相互转换
看来只能写一个方法来转换,里面判断枚举值,返回相应的字符串
三. NSString转换NSURL失败
NSString转换为NSURL
如果字符串里面有换行 会导致转换失败 返回nil
例如:
http://somewebsite.com?orderPassportId=31327458&freeAirRuleInfos1=SHA,DLCSHA,SHAHAK,FOCSHA,SHAZUH,SHASWA,CSXSHA,SHAWNZ,SHANNG,INCXIY,SHAKWL,KHNSHA,XIYXNN,SHALHW,UYNXIY
__HKLNR_1_2-24_50__FASTLINE_0&flightFreeCode=FASTLINE&tripType=1&departDate=20170518&oriDepartDate=20170518&flightNo=MU5189
四.prefix header等路径
$(SRCROOT)/MyPrefixHeader.pch
$(SRCROOT) 根目录
$(PROJECT_DIR) 项目路径
其实不需要了解太多 输入完成后都会显示实际的路径 只要匹配就好
五. NavigationBar透明度
UINavigationController
navigationBar.translucent属性控制导航栏的半透明效果
设置的背景图片跟随此属性半透明效果
translucent=YES,半透明,self.view.origin.y = 0;
translucent=NO, 不透明,seld.view.origin.y =
self.navigationController.navigationBar.frame.size.height;
六.ScrollView内部存在偏移
高度: NavigationBar导航栏 44. StatusBar 状态栏 20. 标签栏Tabbar49.
当status bar, search bar, navigation bar, toolbar, or tab bar.等存在的时候
控制器属性automaticallyAdjustsScrollViewInsets默认为YES,此时如果
视图控制器VC的第一个子视图 或者 子视图的第一个子视图(可一层层下去) 是 UIScrollView或其子类,就会出现偏移
可以理解为 会根据Bar自动设置scrollview.contentInset属性。
现在我需要实现简单的效果
仅存在一个子视图ScrollView,内部有一张只能够左右滑动,不能上下滑动的图片。(contentSize.height <= image.height)
1.当只有状态栏时, sv内上方多了20个像素,且上下居然可以滑动。 contentInset.top=20
将automaticallyAdjustsScrollViewInsets = NO 正常
2.在有状态栏、导航栏的情况下
①. navigationBar默认为半透明的(translucent=YES) sv内上方多了20+44个像素 contentInset.top=64
设置automaticallyAdjustsScrollViewInsets = NO 正常
②. 如果navigationBar是不透明的(translucent=NO) automaticallyAdjustsScrollViewInsets无论YES还是NO 都是正常的
因此为了消除偏移,可以设置vc.automaticallyAdjustsScrollViewInsets = NO;
七. 存在转义字符的字符串如何恢复
NSString *string = @"1.为保障行程单邮寄的时效性,目前统一使用邮政EMS快递进行寄送。<br>2.请您完整填写收件地址、邮政编码及联系方式,如因信息错误、不全造成无法投递,东航概不承担责任,邮寄费用不退。";
__unused NSString * A = [[NSAttributedString alloc] initWithData:[string dataUsingEncoding:NSUTF8StringEncoding]
options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute:@(NSUTF8StringEncoding)}
documentAttributes:nil error:nil].string;
//输出结果: 1.为保障行程单邮寄的时效性,目前统一使用邮政EMS快递进行寄送。<br>2.请您完整填写收件地址、邮政编码及联系方式,如因信息错误、不全造成无法投递,东航概不承担责任,邮寄费用不退。
八. 检测在非主线程里更改UI
使用:PSPDFUIKitMainThreadGuard.m
http://files.cnblogs.com/files/yffswyf/PSPDFUIKitMainThreadGuard.zip 下载后将.zip改为.m
不需要做任何处理 只需要将该.m文件添加到项目中就行
九、UITextField 添加事件:UIControlEventEditingChanged 检测输入变化 而不是 UIControlEventValueChanged
十、使用Masonry对可换行 UILabel 布局,无需手动计算文本高度
lbNotice.preferredMaxLayoutWidth = SCREEN_WIDTH - 20 * 2; //最大宽度
[lbNotice setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
lbNotice.numberOfLines = 0;
[lbNotice mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.mas_equalTo(self);
make.left.mas_equalTo(self).offset(-20);
}];
十一.
AFNetworking 3.0:
设置并发数:有问题
AFHTTPSessionManager *sessionManager.operationQueue.maxConcurrentOperationCount = 3;
正确方式: 设置NSURLSessionConfiguration的属性HTTPMaximumConnectionsPerHost
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.HTTPMaximumConnectionsPerHost = 3;
AFHTTPSessionManager.sessionManager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:config];
十二.
Quartz2D的绘制时,如果挨着边上画会出现抗锯齿机制
比如使用bezierPathWithRoundedRect: cornerRadius: 画圆角矩形
可以将边上的先往里收一点
十三.
Base58正则表达式判断 A-Z、a-z、0-9中,去除
0(数字0)、O(o的大写字母)、l( L的小写字母)、I(i的大写字母)
^[A-HJ-NP-Za-km-z1-9]+$
十四.
自动布局中,TableViewHeader中 加载网络图,给定一个占位图,之后每次通过sd_setImageWithURL:修改图片的实际尺寸。
会导致图片错位。然而重新进入页面又变成正常的了(图片已缓存)。 所以需要每次下载完成后reloadData;
另一个问题是,在UITableView reload的时候,如果实际高度大于estimatedRowHeight,会发生移位。
十五.
iOS >= 12.2 UIWebview 中视频 用户点击无法播放
设置 webView.mediaPlaybackRequiresUserAction = NO;
十六.
iOS < 11,部分cell固定高度,部分自适应。
同时需要实现以下代理,自动布局才正常。
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath;
『IOS』 遇到问题记录(长期更新)的更多相关文章
- SAP+DB2 糟糕的报表查询『ZCOR0015』 优化全程记录
ZCOR0015的优化全过程记录文档 2015年3月,今天无意翻到这篇写于2010年7月的文档,回想那时的工作,毕业3年初出茅庐的我面对接触不多的SAP+DB2竟敢操刀动斧,自信满满. 虽然这过程一路 ...
- 『009』Python
『004』索引-Language Python 准备更新中
- [原创] 【2014.12.02更新网盘链接】基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装
[原创] [2014.12.02更新网盘链接]基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装 joinlidong 发表于 2014-11-29 14:25:50 ...
- iOS 多线程:『RunLoop』详尽总结
1. RunLoop 简介 1.1 什么是 RunLoop? 可以理解为字面意思:Run 表示运行,Loop 表示循环.结合在一起就是运行的循环的意思.哈哈,我更愿意翻译为『跑圈』.直观理解就像是不停 ...
- 『Re』正则表达式模块_常用方法记录
『Re』知识工程作业_主体识别 一个比较完备的正则表达式介绍 几个基础函数 re.compile(pattern, flags=0) 将正则表达式模式编译成一个正则表达式对象,它可以用于匹配使用它的m ...
- 『Json』常用方法记录
json模块可以把字典结构改写为string然后保存,并可以反向读取字典 pickle模块则可以持久化任意数据结构 但是即使同样是字典数据结构,两个包也是有差别的, json字典value不支持其他对 ...
- 『Numpy』常用方法记录
numpy教程 防止输出省略号 import numpy as np np.set_printoptions(threshold=np.inf) 广播机制 numpy计算函数返回默认是一维行向量: i ...
- 『Os』常用方法记录
os.rename(name_old, name_new) 『Scrapy』爬取斗鱼主播头像 重命名函数os.rename比win下的重命名强多了,它可以对路径重命名达到修改文件位置的功效. os.p ...
- iOS-工作经验+资料分享(长期更新)
在此记录工作中的一些经验和技术资料 长期更新 欢迎各位业内朋友指正.交流技术上的问题 0.苹果开发联盟电话 4006 701855 1.轻易不用使用tableViewController,因为改变他自 ...
随机推荐
- 协同过滤 spark scala
1 http://www.cnblogs.com/charlesblc/p/6165201.html [转载]协同过滤 & Spark机器学习实战 2 基于Spark构建推荐引擎之一:基于物品 ...
- springboot取得resources下的文件
参考http://blog.csdn.net/programmeryu/article/details/58002218 ResourceUtils.getFile("classpath:p ...
- 如何禁止浏览器自动填充非登陆input的账号和密码?
发现浏览器填充密码的方式,那就是,找到页面上第一个type为password的input填充.发现了这个规律后,很自然的就想到了,是不是可以在真正的password前面加一个隐藏的password,形 ...
- Spring中的IoC(控制反转)具体是什么东西
IOC:inverse of Control: 控制反转. 意思是程序中的之间的关系,不用代码控制,而完全是由容器来控制.在运行阶段,容器会根据配置信息直接把他们的关系注入到组件中.同样,这也是 依赖 ...
- 《Visual Basic开发实战1200例》包括第I卷、第II卷共计1200个例子,本书是第I卷,共计600个例子。
本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Visual Basic进行程序开发各个方面的知识和技巧.主要包括基础知识.窗体界面设计.控件应用等.全书分6篇20章,共计6 ...
- visual code golang配置
前言 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org), 导致一些包无法安装,最终会导致环境搭建失败,跟据这个教程几步,我们将可以快速的构建golang ...
- CentOS下zabbix监控mysql5.6版本主从
目录 CentOS下zabbix监控mysql5.6版本主从 1. Zabbix添加自定义监控流程 2. 具体步骤 1. 编写监控mysql主从脚本 2. mysql赋权 3. 查看脚本执行效果 4. ...
- spring监听与IBM MQ JMS整合
spring xml 的配置: 文件名:applicationContext-biz-mq.xml <?xml version="1.0" encoding="UT ...
- php libevent 详解与使用
libevent是一个基于事件驱动的高性能网络库.支持多种 I/O 多路复用技术, epoll. poll. dev/poll. select 和 kqueue 等:支持 I/O,定时器和信号等事件: ...
- macos安装postman
安装命令 brew cask install postman brew 是从下载源码解压然后./configure && make install,同时会包含相关依存库.并自动配置 好 ...