自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 2090

原创 属性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 569

原创 KVO,NSNotification,delegate及block区别?

KVO,NSNotification,delegate及block区别?KVO就是cocoa框架实现的观察者模式,一般同KVC搭配使用,通过KVO可以监测一个值得变化,比如View的高度变化。是一对多的关系,一个值得变化会通知所有的观察者。NSNotification是通知,也是一对多的使用场景。在某些情况下,KVO和NSNotification是一样的,都是状态变化之后告知对方。

2016-04-16 11:07:36 1231

原创 个人总结面试题

调用一个类的静态方法需不需要release?静态方法,就是类方法,不需要,类方法对象放在autorelease中。

2016-04-16 11:07:02 289

原创 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关注的人

提示
确定要删除当前文章?
取消 删除