参考:http://stackoverflow.com/questions/5361369/uiview-frame-bounds-and-center
UIView中有两个和位置相关的属性,一个为frame,另一个为bounds.
frame官方文档中是这样描述frame的:
1The view’s frame rectangle, which defines its position and size in its superview’s coordinate system.
意思就是frame是指view在superview的坐标系统中的position和size.
bounds官...
简介Core Data 是一种持久化技术,它能够将模型对象的状态持久化到磁盘.
Core Data的简单示例使用Core Data的基本流程是:
创建Entity,指定其名称
为Entity添加Attributes,指定其名称和数据类型.
储存managed object.
取得managed object.
1234567891011121314151617181920//储存person let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate ...
简介NSOperation和NSOperationQueue是GCD的封装.NSOperation和NSOperationQueue对应的分别是GCD中的任务和队列.
特性对比GCD,NSOperation提供了一些新的特性,例如取消队列中的任务,这在一些场景下将会大大减少cpu的运算量.试想一下你要实现一个下载大量图片并在UICollectionView中展示的应用,一般情况下是当用户滑动UICollectionView到达了一定地方的时候,新的图片将会被下载以填充即将要展示的view.那么当用户快速滑过UIConnectionView的时候,很多view已经被滑出屏幕但是加载当中的图...
Mapmap方法的功能是:对数组中的每个元素调用指定的方法,生成一个新的数组并返回.例如,如果一个数组是[1,2,3,4,5,6,7,8,9]并且该指定的方法是f(x)=x^2,那么map()方法完成的功能如下:
Reducereduce方法的效果是reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)就是说先把一个数组的第一,第二个元素作为参数,调用f()方法,把返回值和数组的第三个元素再调用f()方法,一直进行到数组的最后一个元素为止.最后返回一个值.
Filterfilter方法用于过滤数组,遍历数组元素,把元素作为参数传入判断...
简介
Pitaya是一个基于NSURLSession开源的适合大文件上传的HTTP请求库.十分小巧.
PitayaManager简介PitayaManager负责
构造 NSURLRequest
确定 URL
确定 HTTP 方法(GET、POST 等)
添加特定的 HTTP 头
填充 HTTP Body
2.驱动 session.dataTaskWithRequest 方法,开始请求
实现multipart/form-data请求为什么这个库适合大文件的上传呢,原因就在PitayaManager的buildBody()和 buildHeader()方法中.在buildHeade...
@property@property在Objective-C中的作用是生成存取方法.当存取方法被生成后,就可以使用形如 实例名.属性名这种格式来访问实例变量.虽然这种方式和C++的访问对象成员的形式很像,但是在ObjC中的这种方法其实是调用了实例的存取方法而已.所以
1myCar.type = "SUV";
这种写法其实是与
1[myCar setType:@"SUV"];
等价.
@synthesize@synthesize是将存取方法和变量关联起来.
如果写入这样的代码:
1@synthesize type = _type
那么就是将实例变量_type和存取方法关联起来.我们可...
Replaykit简介iOS9新增了ReplayKit,它能够给应用增加视频录制,保存以及分享的功能。
使用
开始录制:
123456let recorder = RPScreenRecorder.sharedRecorder() recorder.startRecordingWithMicrophoneEnabled(true) { [unowned self](error) -> Void in if let unwrappedError = error { print(unwrappedE...
命令模式简介命令模式提供了一个对被调用方法的详情进行封装,以达到推迟调用或者可供不同元素调用的机制.使用命令模式的优点是1.可以执行撤销操作2.可以创造宏.
实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748protocol Command { func execute();}class GenericCommand<T> : Command { private var receiver: T; pri...
#对象池#
对象池对象池设计模式是单例模式的一种演变.与单例模式的访问一个对象不同,对象池模式提供访问多个对象的方法.对象池模式在要在多个类似对象中取得一个对象的情况下比较常用.
过程
初始化.被管理的对象集合在这步准备好.
checkout.需要对象的元素从池中借走一个对象.
使用对象.这步不需要池的任何动作.被使用的对象不能被其他元素借走.
check-in.元素归还借走的对象.
策略对象创建策略对象池中的对象可以一次性创建,也可以在被需要时再创建,成为惰性创建.一次性创建使得初始化对象的代价在他们被需求之前就已经显现.而惰性创建可以让创建对象的花销较小.
对象复用策略最简单的方...
浅复制和深复制浅复制浅复制是指在复制的时候,对象里的值类型被复制一份,而引用类型没有被复制,指向原来的对象.
深复制深复制是指在复制的时候,对象里的值类型被复制一份,而引用类型也被复制一份.
swift中的浅复制和深复制的情况在swift中,一个对象直接用等号赋值给另一个对象,则建立了两个指向同一个实例的引用.这种情况既不是浅复制也不是深复制.swift中的结构体,数组是浅复制的.(当然,也可以自己实现一个深复制的方法).
要建立复制,要实现NSCopying协议和实现其中的copyWithZone:方法
12345678910111213141516171819202122232425...