
iOS
文章平均质量分 74
不在下雪天
这个作者很懒,什么都没留下…
展开
-
xcode 8.1: bundle format unrecognized, invalid, or unsuitable
由于使用swift的原因博主升级了xcode到8.1,担心的事情还是发生了,升级完成之后原来oc的工程编译出现错误:xcode 8.1: bundle format unrecognized, invalid, or unsuitable。意思是说bundle的格式无效,瞬间懵逼了。一直都能用的bundle怎么会格式错误呢?最后还是在stack overflow中找到了答案点击打开链接原创 2016-12-06 10:17:24 · 1573 阅读 · 0 评论 -
ios runtime - 开篇
objc_msgSend最近在搞工程中的安全拦截措施,自然而然的要用到消息的转发机制,在这里就简单的叙述一下消息的转发机制为后续的工作做铺垫。 首先OC采用的是消息结构,而非函数调用。二者的区别在于消息结构的语言在运行时执行的代码直到运行时才确定;甚至连接收消息的对象编译器也不关心,也是在运行时确定,这个过程叫作动态绑定。而函数调用执行的代码有编译器决定,只有在函数是多态的时候才在运行时通过虚拟方原创 2017-08-04 17:12:51 · 342 阅读 · 0 评论 -
iOS-Jenkins脚本打包上传fir
这次jenkins打包先介绍一下脚本的方式,配置jenkins的方法后续在补上。这种脚本的方式比较简单,要不要jenkins都可以,因为jenkins做的也就是执行几句命令和直接在终端执行没什么区别。脚本涉及的工具:xcodebuildxcrunfir-cli 其中,xcodebuild和xcrun都是xcode自带的工具,如果没有可以通过下面命令安装,至于这两个工具中的各种命令在这里就不介原创 2017-08-11 14:28:57 · 1230 阅读 · 0 评论 -
iOS黑魔法-- Method Swizzle
Method Swizzle目前method swizzle已经用了很长时间了,从线上的表现来看,这是一个非常有必要的工具,可以很好的拦截一些脏数据或者我们的不慎造成的一些常见的崩溃,所以笔者记录分享一些这些方法。AOP首先我们先要抛开OOP(面向对象编程)的观念,从AOP(Aspect Oriented Programming,面向切面编程)的角度来封装一系列swizzle方法,以方...原创 2018-08-12 16:45:07 · 1059 阅读 · 0 评论 -
iOS黑魔法--NSArray的拦截
接上一篇的iOS黑魔法来看下NSArray的拦截方法。拦截的主要就是一些常用的方法,比如index访问越界,add remove操作等,笔者列出自己的封装,不过你也可以根据自己的需要添加更多的拦截方法。 首先要明白NSArray是用了类簇的方法隐藏了内部的实现细节,NSArray也只是一个抽象的基类,用NSArray创建的对象并不是NSArray对象,而是它所封装的实体子类。 OC中并不能指明...原创 2018-08-12 18:21:48 · 779 阅读 · 0 评论 -
探究iOS分类(category)为什么不能直接添加属性
既然要探究的是分类,那么我们先看一下分类的定义//Category表示一个结构体指针的类型typedef struct objc_category *Category;struct objc_category { char * _Nonnull category_name OBJC2_UNAVAILABLE; ch...原创 2018-08-15 23:38:35 · 8528 阅读 · 0 评论 -
autoreleasepool详解
随着ARC技术的使用,iOS的开发者在内存管理方面越来越方便,很多的事情已经不需要我们来操作,编译器已经帮我们做好了。即使是这样有些还是要了解的,以便我们犯一些低级的错误,造成内存泄露甚至崩溃,今天来说说autoreleasepool的那些事。 来看个常见的面试题:常常会问下面的代码有什么问题,怎么解决?如果你对autoreleasepool不了解的话就很难发现问题。for (int i...原创 2018-08-18 23:48:53 · 3727 阅读 · 0 评论 -
__weak详解
object默认的修饰符是__strong,然而在开发中我们也经常使用__weak,用它来解决循环引用的问题:两个对象相互引用无法释放,造成内存泄露。用__weak来破坏一个强引用,来达到正常释放的目的。这种情况常见于block中,但是有没有想过为什么block会强引用block中的对象呢?答案也很简单,我们手动或者编译器帮我们对block进行了copy的操作,所以block会对其块中的对象就行强...原创 2018-08-19 17:46:31 · 13151 阅读 · 0 评论 -
block详解
block是C语言的扩充,既像函数那样能够执行又像参数那样进行传递,是可以带自动变量的匿名函数。在OC中,block常常会造成会造成循环引用,我们要用__weak修饰符来打破循引用,达到正常释放的目的。一个小的知识点,block为什么会对其块内的对象进行强引用?因为系统或我们对block进行了copy操作。这些都不是本篇博客的中心,这篇博客主要来看下block的底层实现。 先来看下最简单bloc...原创 2018-08-20 11:59:33 · 1312 阅读 · 0 评论