随笔分类 -  IOS开发问题积累

摘要:一、需求 实现一个UI组件,要求组件内部的内容变化的时候,内容需要同时产生变化 二、实现 效果: 一个三个元素的组件,两边固定大小,中间的Label内容会变化 实现的约束: 首先保证三个元素同时居中,横向上面,两个icon的宽度已知,两个icon距离两边的边距确定,最主要的是label的宽度不确定, 阅读全文
posted @ 2018-10-12 20:59 兜兜有糖的博客 阅读(368) 评论(0) 推荐(0) 编辑
摘要:一、需求 通过Interface Builder的形式创建Xib,并将其和一个UIView的子类绑定,如何实现? 二、解决 这个问题通过搜索,有大量的答案,大概答案的代码如下: 也就是在你的子类中,在初始化方法initWithFrame、initWithCoder中主动加载一个xib对应的类,作为子 阅读全文
posted @ 2018-10-12 20:52 兜兜有糖的博客 阅读(1060) 评论(0) 推荐(0) 编辑
摘要:一、事件起因 最近在开发一版本的需求中,遇到一个问题,需要在一个ViewController的顶部,UINavgationBar的下面放置一个View,这个View需要能够正常收到事件 将我们的View放到这个位置之后,发现底部的View、按钮等无法接受到响应 二、解决思路 1)第一次想到的是事件转 阅读全文
posted @ 2018-10-11 20:26 兜兜有糖的博客 阅读(820) 评论(0) 推荐(0) 编辑
摘要:一、原书第一版154页开始讲解串行队列、并发队列、以及在Dispatch_Async、Dispatch_Sync下面的作用 最后一段代码: 代码如上面,最后输出的数字代表执行顺序。书中最后说顺序会输出两个结果,12345、12435、3一定会在4之前被打印出来 下图的顶部 看到这里觉得有些不对,写了 阅读全文
posted @ 2018-10-09 22:53 兜兜有糖的博客 阅读(343) 评论(0) 推荐(0) 编辑
摘要:一、前言 看了一段时间的Swift,慢慢转变了一些对Swift的看法。 Swift作为苹果新晋的开发语言、具有模板编程、函数编程、协议多继承、vTable静态绑定、值引用类型区分、Option类型等动态语法的多种特性。 Swift作为一门跨平台的语言,非常强调性能,静态绑定是Swift跟OC语言的动 阅读全文
posted @ 2018-10-09 15:33 兜兜有糖的博客 阅读(893) 评论(0) 推荐(0) 编辑
摘要:一、问题引入 近日开发中引入一个随机crash,Crash堆栈如下: 明显是对一个对象进行retain的时候产生的Crash。仔细回忆却没有发现突破点。直到看到自己写的下列代码 经过代码验证,stackBlock作为参数传递的时候,需要确保对其进行copy操作,否则stackBlock在函数返回之后 阅读全文
posted @ 2018-09-04 20:59 兜兜有糖的博客 阅读(4516) 评论(0) 推荐(0) 编辑
摘要:一、现象 今日在开发中遇到一个诡异问题,一个自定义的AlertView在显示之后瞬间在屏幕上消失,但是其对象在内存中依然存在 二、排查 通过lldb命令查询到view.superview.superview不存在为nil,才明白这个view的父view的父view被释放掉了,释放过程中该view自动 阅读全文
posted @ 2018-09-04 17:24 兜兜有糖的博客 阅读(810) 评论(0) 推荐(0) 编辑
摘要:一、问题: 如何在Autolayout模式中设置一个UIView的layer.cornerRadius? 二、解决: UiView的layer目前还不支持Autolayout设置约束,因此如果想设置一个layer.cornerRadius的大小,必须传递的是一个值。 如果被设置的UIView尺寸会发 阅读全文
posted @ 2018-09-03 19:32 兜兜有糖的博客 阅读(1256) 评论(0) 推荐(0) 编辑
摘要:一、测试环境 iPhoneX 真机+Debug模式,Timer代码工作在主线程,主线程空闲不阻塞 在子线程统计每3秒tick计数,逐步减小inteval,看能达到多大精度。 忽略原子计数值操作的影响 二、测试代码 间隔分别设置为1000us,100us,10us,对应结果如下; 三、结论 GCD T 阅读全文
posted @ 2018-08-21 20:26 兜兜有糖的博客 阅读(667) 评论(0) 推荐(0) 编辑
摘要:一、结论 1)@synchronized内部使用的是recursive_mutex_lock,也就是递归锁,对于统一线程来说,@synchronized加锁的方法可以重复加锁。 比如代码: 输出结果为: 2)@synchronized 可以看成一个函数,加锁的对象是后面传入对象的地址,所以如果加锁对 阅读全文
posted @ 2018-08-21 15:40 兜兜有糖的博客 阅读(1048) 评论(0) 推荐(0) 编辑
摘要:一、题目 AutoLayout中,布局两个UILabel,竖直方向处于统一水平线上;水平方向,二者间隔一定距离,左边的label距离父容器一定间距,右边的label距离容器右侧一定间隔 要求,两个label填充内容的时候,压缩其中一个,另外一个不变 二、解答 在Autolayout中,类似UIScr 阅读全文
posted @ 2018-08-16 20:07 兜兜有糖的博客 阅读(1680) 评论(0) 推荐(0) 编辑
摘要:一、接上一篇《nonatomic 带来的线程安全问题》,这里继续详细讨论属性各种类型与线程安全的关系 1)影响线程安全的属性类型,nonatomic,atomic,weak 上面有4种属性的定义,在遇到下面的代码的时候 第1种定义不会crash,这是符合atomic的标准写法,通过setter、和g 阅读全文
posted @ 2018-08-06 11:40 兜兜有糖的博客 阅读(639) 评论(0) 推荐(0) 编辑
摘要:一、结论 一个对象对外暴露的读写属性,如果这个属性在多个线程中访问,一定会出现crash。 因此对外暴露的属性一定要考虑线程安全问题。 二、看下面的代码 下面的代码一定会crash,除非obj是atomic 三、现象 产生的现象是一个线程访问这个对象的时候,这个对象已经释放,可能是错误的内存、野指针 阅读全文
posted @ 2018-08-03 20:36 兜兜有糖的博客 阅读(180) 评论(0) 推荐(0) 编辑
摘要:一、苹果禁止使用私有API,以及私有的一些字符串 比如: 因为出现了prefs:root=SAFARI,现在有人想用下面的字符串规避 反编译一下看看生成的二进制代码 这些私有的字符串截断存储在一起,如果苹果采用别的方式,很容易判断使用了私有方法。 二、解决办法 如果苹果允许参数为变量的方式,那么问题 阅读全文
posted @ 2018-07-06 15:30 兜兜有糖的博客 阅读(1019) 评论(0) 推荐(0) 编辑
摘要:一、工作中经常使用到一些链接,写了个脚本,可以在控制台进行命令行添加、删除、和打印 利用python的optionparser模块进行解析命令: 然后使用alias 软链接指令,放入启动执行脚本中 执行效果: 阅读全文
posted @ 2018-07-04 16:38 兜兜有糖的博客 阅读(259) 评论(0) 推荐(0) 编辑
摘要:一、事情来源 事情来源是一段奇怪的代码,代码如下 当 x = 1000的时候,代码输出的是 1和2 ,也就是 1000 和 2000的case都执行了。(测试环境是Xcode + Mac iphone 模拟器) 原因是什么?为什么不是和if else if else一样呢 根据网上的资料,VC6.0 阅读全文
posted @ 2018-07-04 14:21 兜兜有糖的博客 阅读(2735) 评论(0) 推荐(0) 编辑
摘要:一、内容决定宽度 实现AutoLayout模式下面,UILabel跟随内容大小自动扩张,在storyboard中拖拽一个UILabel,将其居中,然后定时改变内容,不需要特别设置,那么UILabel宽度将跟随内容变化 二、限制位置+内容决定宽度 在上面的基础之上,会发现UILabel宽度逐渐超出屏幕 阅读全文
posted @ 2018-06-15 15:05 兜兜有糖的博客 阅读(566) 评论(0) 推荐(0) 编辑
摘要:一、CAShapeLayer的作用和优点 可以通过矢量图形而不是bitmap来绘制的图层子类。你指定诸如颜色和线宽等属性,用CGPath来定义想要绘制的图形 你也可以用Core Graphics直接向原始的CALyer的内容中绘制一个路径,相比直下,使用CAShapeLayer有以下一些优点: 渲染 阅读全文
posted @ 2017-12-28 20:40 兜兜有糖的博客 阅读(650) 评论(0) 推荐(0) 编辑
摘要:一、iPhoneX适配第一步,根据iPhoneX的屏幕像素大小,引入对应的启动图,告诉系统,app兼容iPhoneX 需要在launchimage中引入一张 1125*2436的png,app将默认展示支持iPhoneX的效果 二、安全区域的概念 所谓的安全区域是一个虚拟出来的概念,因为iPhone 阅读全文
posted @ 2017-12-27 11:32 兜兜有糖的博客 阅读(3903) 评论(0) 推荐(0) 编辑
摘要:1、上架的App如何测试推送? 苹果的证书分为开发证书和发布证书,上架AppStore的App应该使用发布证书进行配置,但是发布证书编译出包的App无法安装到手机上 只有一种方式,采用Ad hoc provision file,将手机UUID注册到账号中,生成Ad hoc provision fil 阅读全文
posted @ 2017-10-20 11:14 兜兜有糖的博客 阅读(221) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示