- 博客(23)
- 收藏
- 关注
原创 瀑布流怎么理解和实现的
1、如果简单的来说,用三个tableView就可以实现瀑布流,3个tableView实现联动滚动2、其实最好的做法在scrollView上使用3个复用队列,如果一种一个cell超过屏幕,不能release,而是把它回收到复用队列中,如果要创建一个cell,首先从复用队列中取一个,然后使用。
2016-04-18 12:05:30 429
原创 解释TCP/IP协议
TCP/IP是网络开发中常见的传输协议,他传输和udp相比是可靠的。http是基于tcp/ip的主要用户互联网的协议,所谓可靠是tcp传输对方会给一个ACL信号(确认信号)tcp传输不如udp快,吞吐量不如udp大tcp是顺序的,udp是无序的tcp会保持连接,udp不会保持连接。
2016-04-18 12:01:21 576
原创 在项目什么时候选择使用GCD,什么时候选择NSOperation
项目中使用NSOperation的优点是NSOperation是对线程的高度抽象,在项目中使用它,会使项目的程序结构更好,子类化NSOperation的设计思路,是具有面向对象的优点(复用、封装),使得实现是多线程支持,而接口简单,建议在复杂项目中使用。项目中使用GCD的优点是GCD本身非常简单、易用,对于不复杂的多线程操作,会节省代码量,而Block参数的使用,会是代码更为易读,建议
2016-04-18 10:47:51 1063
原创 ASI原理是什么?请举例来说明你平时用的哪些文件?
ASI使用apple底层CFNetworking框架实现的,而不是用Socket套接字实现的。他是一个基于NSOperation(抽象类)的线程处理网络框架CFNetwork是基于InputSteam/Outstream流的方式管理数据,它内部使用了多线程异步模式进行数据的通讯,比如数据上传进度,下载进度,缓存的管理机制,大文件下载,大文件上传,安全机制。
2016-04-18 10:34:04 2092
原创 属性readwrite,readonly,assign,retain,copy,nonatomic各是什么作用,在哪种情况下用?
readwrite是可读可写特性;需要生成getter方法和setter方法时readonly是只读特性 只会生成getter方法 不会生成setter方法;不希望属性在类外改变assign是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时;retain表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1
2016-04-18 10:09:56 484
原创 如何理解线程
1、iOS线程是为了界面流程,防止页面假死。比如解析一个大文件,比如一个地区的详情文件,解析时间比如是10秒,那么不用线程的话,界面就会假死、卡顿10秒左右。用户体验差,那么解决方法就是很快吧界面暂时启动线程去后台解析;2、再比如做图片滤镜,图像操作会耗费很多时间,比如5秒左右,界面就会假死;3、网络下载数据,用于网络状态好坏时间不确定,那么我们需要使用线程来处理这种不确定的关系,一定数据
2016-04-18 09:57:22 354
原创 谈谈Object-C的内存管理方式及过程?
1、当你使用new,alloc和copy方法创建一个对象时,该对象的保留计数器值为1,当你不再使用该对象时,你要负责向该对象发送一条release或autorelease消息,这样,该对象将在使用寿命结束时被销毁。2、当你通过任何其他方法获得一个对象时,则假设该对象的保留计数器值为1,而且已经被设置为自动释放,你不需要执行任何操作来确保该对象被清理,如果你打算在一段时间内拥有该对象,则
2016-04-17 11:30:48 1172
原创 block实现原理?
OC是对C语言的扩展,block的实现是基于指针和函数指针。从计算语言的发展,最早的goto,高级语言的指针,到面向对象语言的block,从机器的思维,一步步接近人的思维,以方便开发人员更为高效、直接的描述出现现实的逻辑(需求)使用实例cocoaTouch框架下动画效果的Block的调用使用typed声明blocktypedef void(^didFinishB
2016-04-17 11:25:13 346
原创 多线程与block
GCD与Block使用dispatch_async系列方法,可以以指定的方式执行blockGCD编程实例dispatch_async的完整定义void dispatch_async(dispatch_queue_t queue,dispatch_block_t block);功能:在指定的队列里提交一个异步执行的block,不阻塞当前线程
2016-04-17 10:52:50 420
原创 在项目什么时候选择使用GCD,什么时候选择NSOperation?
项目中使用NSOperation的优点是NSOperation是对线程的高度抽象,在项目中使用它,会使项目的程序结构更好,子类化NSOperation的设计思路,是具有面向对象的优点(复用、封装),使得实现是多线程支持,而接口简单,建议在复杂项目中使用。项目中使用GCD的优点是GCD本身非常简单、易用,对于不复杂的多线程操作,会节省代码量,而Block参数的使用,会是代码更为易读,建议
2016-04-17 10:21:25 1988
原创 远程推送详解
当服务器远程向APNS推送至一台离线的设备时,苹果服务器Qos组件会自动保留自焚最新的通知,等设备上线后,Qos将把推送发送到目标设备上远程推送的基本过程1、客户端的app需要将用户的UDID和app的bundleID发送给apns服务器,进行注册,apns
2016-04-16 19:07:12 1100
原创 @protocol和category中如何使用@property?
(1)在protocol中使用property只会生成setter和getter方法声明,我们使用属性的目的,是希望遵守我协议的对象能实现该属性。(2)category使用@property也是只会生成setter和getter方法的声明,如果我们真的需要给category增加属性的实现,需要借助于运行时的两个函数:1⃣️obj_setAssociatedObject2⃣️obj_ge
2016-04-16 11:48:26 2707
原创 Runtime详解
runtime简介OC中的runtime是一个运行时库(runtime Libarary),它是一个主要使用C和汇编写的库,为C添加了面向对象的能力并创造了OC。这就是说它在类信息(class information)中被加载,完成所有需要的结构体,让OC的面向对象编程变为可能。runtime详解OC是面向运行时的语言(runtime oriented language
2016-04-16 11:44:24 558
原创 深浅复制和属性为copy,strong值得变化问题?
浅复制:只复制指向对象的指针,而不复制引用对象本身。对于浅复制来说,A和A_copy指向的是同一个内存资源,复制的只不过是一个指针,对象本身资源还是只有一份,那如果我们队A_copy执行了修改操作,那么发现A引用的对象同样被修改了。深复制就好理解了,内存中存在了两份独立对象本身。在Objective-C中并不是所有的对象都支持Copy,MutableCopy,遵守NSCopying
2016-04-16 11:19:16 570
原创 KVO,NSNotification,delegate及block区别?
KVO,NSNotification,delegate及block区别?KVO就是cocoa框架实现的观察者模式,一般同KVC搭配使用,通过KVO可以监测一个值得变化,比如View的高度变化。是一对多的关系,一个值得变化会通知所有的观察者。NSNotification是通知,也是一对多的使用场景。在某些情况下,KVO和NSNotification是一样的,都是状态变化之后告知对方。
2016-04-16 11:07:36 1231
原创 static作用
(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;(2)在模块内的static全局变量可以被模块内所用函数访问,但不能呗模块外其它函数访问;(3)在模块内的static函数只可呗这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内;(4)在类中的static成员变量属于整个类所拥有,对类的
2016-04-16 10:22:37 237
原创 GCD的一些原理
GCD核心概念1、将任务添加到队列,并且制定执行任务的函数、2、任务使用 block 封装 任务的 block 没有参数也没有返回值3、执行任务的函数 异步 dispatch_async 不用等待当前语句执行完毕,就可以执行下一条语句 会开启线程执行block任务 异步 是
2016-04-15 14:27:36 1504
原创 在工作中使用block遇到一些问题和新的认识
block本质 block的本质就是C语言的函数指针,本身就是代码块--特殊的匿名函数。同时block可以作为参数在方法和函数间传递数值,也可以作为方法和函数的返回值,经常在界面实现数值传递,用于异步和回传。 block经常使用的还是作为参数传值,最大的好处是可以在不同情况下回调不同的代码。block的内存管理 block在ARC环境
2016-04-15 13:59:44 604
原创 Masonry
1、Masonry使用心得: Masonry是目前最流行的AutoLayout框架。 使用Masonry不需要设置控件的translatesAytoresizingMaskIntoConstraints的属性为NO。 使用Masonry添加兄弟控件约束不需要考虑父控件。 Masonry使用技巧: 定义以下两
2016-04-15 13:25:44 491
转载 iOS小结
一.内存管理情况1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象。当用户的代码运行告一段 落,开始等待用户的操作,自动释放池就会被释放掉(调用dealloc),池中的对象都会收到一个release,有可能会因此被销毁。2-成员属性:readonly:不指定readonly,默认合成getter和setter方法
2016-04-15 12:00:19 492
原创 cocodata有一个版本迭代
//版本叠代需要添加的 if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:@{NSMigratePersistentStoresAutomaticallyOption:@YES,NSInferMappin
2016-04-15 09:34:59 328
转载 iOS面向对象的三大特征
一、封装封装是对象和类概念的主要特性。它是隐藏内部实现,稳定外部接口,可以看作是“包装”。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。好处:使用更简单变量更安全可以隐藏内部实现细节开发速度加快OC中一个类可以继承另一个类,被继承的类成为超类(superclass),继承的类是子类(childclass),可以直接拥
2016-04-09 11:35:26 1761
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人