![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OC
紧握着寒风
这个作者很懒,什么都没留下…
展开
-
runtime hook 之NSDictionary、NSArray
现在遇到json数据解析,服务器有可能给nil、null、@”“等,用objectForKey取出来是可以为nil等上述类型,不会报错,但是用的时候GG思密达了,而且以前自己没有类型判断完整,这时候不想去挨个挨个的改,hook大法再次登场@implementation NSDictionary (runtimeObjectForKey)+ (void) load{ static dispa原创 2016-11-08 15:24:13 · 2408 阅读 · 0 评论 -
Static 与 const
同事问到我这个基础问题,这里做下记录,方便查阅1. Staticstatic 修饰变量1. 局部的 static 变量简单说就是局部的静态变量(存储在静态数据区),在哪一个代码块中声明,就只能在那里使用。优点:因为变量存储于静态区域,所以会记录下上一次变量的数据。2. 外部的 static 变量不加static的外部(代码块{}之外的)变量,默认静态变量,作用域很广,加上static为了原创 2017-06-13 11:24:32 · 311 阅读 · 0 评论 -
AFNetworking 状态栏小菊花
网络请求 状态栏小菊花转动问题,afn默认没有开启,需要开启导入#import "AFNetworkActivityIndicatorManager.h"然后 [AFNetworkActivityIndicatorManager sharedManager].enabled = YES; 就可以了这个方法afn会自动检测,只有网络加载缓慢,数据量较大的时候才会显示,如果需要每次都显示那就自己设置原创 2017-02-03 10:14:32 · 1595 阅读 · 0 评论 -
3D基本小知识
3D渲染用3d数据生成一个2d图像的过程叫做渲染,在计算机上显示的图片是由矩形 的颜色点组成的,这些矩形的颜色点 做像素。像素一个像素点由3各颜色单元构成,一个红点、绿点、蓝点组成。图像图像是以每个像 至少包含 3 个值的一个数组存 在电 的存 器中的。第一个值 指定了像 的 色元 的强度,第 个值代表 色强度,第三个值是 色强度。一个包 含 10000 个像 的图像能够以一个拥有 30000 个强原创 2017-02-17 14:26:08 · 306 阅读 · 0 评论 -
__Block
我们知道在Block使用中,Block内部能够读取外部局部变量的值。但我们需要改变这个变量的值时,我们需要给它附加上__block修饰符。__block另外一个比较多的使用场景是,为了避免某些情况下Block循环引用的问题,我们也可以给相应对象加上__block 修饰符。为什么不使用__block就不能在Block内部修改外部的局部变量?我们把以下代码通过 clang -rewrite-objc 源原创 2016-12-09 17:12:05 · 364 阅读 · 0 评论 -
calayer
UIView是iOS系统中界面元素的基础,所有的界面元素都继承自它。它本身完全是由CoreAnimation来实现的(Mac下似乎不是这样)。它真正的绘图部分,是由一个叫CALayer(Core Animation Layer)的类来管理。UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等等,实际上内部都是在访问它所包含的CALaye原创 2016-12-09 17:04:03 · 275 阅读 · 0 评论 -
Thread
(void)threadStudent{ /// 静态创建 [NSThread detachNewThreadSelector:@selector(testThreadOne) toTarget:self withObject:nil]; /// 这一句跟上面一句效果一致 [self performSelectorInBackground:@selector(testThreadOne) w原创 2016-12-09 17:01:52 · 361 阅读 · 0 评论 -
RunLoop
与线程关系 :runloop依赖于线程,每一个线程都有一个与之对应的runloop,子线程的runloop需要手动启动,当线程结束,runloop也会结束运行 [[NSRunLoop currentRunLoop]run]; [loop1 runUntilDate:[NSDate date]];//[NSDate date]一直运行 [loop2 runMode:NSDefaultRunL原创 2016-12-09 16:59:40 · 249 阅读 · 0 评论 -
GCD
//创建串行队列 DISPATCH_QUEUE_SERIAL// 并行队列 DISPATCH_QUEUE_CONCURRENT//0.dispatch_queue_t serialDispatchQueue = dispatch_queue_create("blog.csdn.net/baitxaps", NULL);//1.dispatch_queue_t concurrentDispat原创 2016-12-09 16:57:44 · 233 阅读 · 0 评论 -
NSString的内存实现
NSString等Foundation框架提供的类的内存管理 (1)字符串的常量池(在数据区) (2) NSString *str1 = @“abc”; NSString *str2 = [NSString stringWithString:@”abc”]; NSString *str3 = [[NSString alloc原创 2016-12-09 16:56:04 · 570 阅读 · 0 评论 -
assign,copy,retain ,weak,strong(二)
如果需要持有一个对象,那么对其发送retain 如果之后不再使用该对象,那么需要对其发送release(或者autorealse) 每一次对retain,alloc或者new的调用,需要对应一次release或autorealse调用什么时候retain例如:person是一个类在vc声明了属性person1和person2@property (nonatomic,strong) person原创 2016-12-07 23:14:29 · 352 阅读 · 0 评论 -
iOS中assign,copy,retain之间的区别以及weak和strong的区别
@property (nonatomic, assign) NSString *title; 什么是assign,copy,retain之间的区别? assign: 简单赋值,不更改索引计数(Reference Counting)。 copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 weak 和strong的区转载 2016-12-07 21:07:08 · 255 阅读 · 0 评论 -
Swift KVO触发问题(runtime支持不友好)
说一说在Swift中使用kvo的一点小坑*kvo实现原理*kvo是基于runtime实现的一个类的属性注册了观察者,在运行时,会动态的创建这个类的派生类(就是子类)键值观察通知依赖于NSObject 的两个方法:willChangeValueForKey: 和didChangevlueForKey:;在一个被观察属性发生改变之前, willChangeValueForKey:一定会被调用,这就原创 2017-03-15 15:22:18 · 1560 阅读 · 0 评论