IOS 杂笔- 6(KVC-KVO)】的更多相关文章

iOS 杂笔-25(不要用copy修饰NSMutableString) 首先对题目进行简单的解释,我所说的不要用copy修饰NSMutableString不是说完全不可以用.但是要清楚一点,既然使用NSMutableString就是想应用它的可变属性,然而当我们用copy修饰NSMutableString后当我们实例化时,生成的是不可变的,当我们第一次使用可变操作时程序会崩溃,因此说不要用copy修饰NSMutableString,与其同理的还有可变数组等.下面是验证操作. 用copy修饰NSM…
iOS 杂笔-24(常用类到NSObject的继承列表) NSString NSObject->NSString NSArray NSObject->NSArray ↑OC基本类都直接继承自NSObject↑ UIView NSObject->UIResponder->UIView UIImage NSObject->UIImage NSObject NSObject->NSObject UITableView NSObject->UIResponder->…
iOS 杂笔-23(区分各种空值) nil是一个对象指针为空 Nil是一个类指针为空 NULL是基本数据类型为空 NSNull空对象(是可以放在数组里的)…
iOS 杂笔-22(万年一遇~一张图片对代理的理解) 建议:本博客需要对代理有一定了解方可阅读(反正我也管不到) 图片 在图片之外设置协议(没有这东西这篇博客也就是夭折了) 下面我对图片中出现的形形色色的元素进行介绍(需要耐心,虽然东西很少) (委托) 表示的是委托方(可以理解为你的老板) (代理) 表示的是代理方(可以理解为你自己) A 没用的标识 B 没用的标识 id delegate 这里是你老板的一个属性,但是他可不一般,他遵守着协议而且他的作用是用手指挥着你 为什么不是用线牵着呢???…
iOS 杂笔-21(self.name = "object" 和 _name ="object" 有什么不同?) 问题如题,这是考察对属性与变量的了解而已. self.name = "object" 是self调用了setName: _name ="object" 是对变量的直接赋值 (属性与变量的优缺点我在前面的文章有错提及)…
iOS 杂笔-20(UIView和CALayer的区别与联系) 每个 UIView 内部都有一个 CALayer 在背后提供内容的绘制和显示,并且 UIView 的尺寸样式都由内部的 Layer 所提供.两者都有树状层级结构,layer 内部有 SubLayers,View 内部有 SubViews.但是 Layer 比 View 多了个AnchorPoint 在 View显示的时候,UIView 做为 Layer 的 CALayerDelegate,View 的显示内容由内部的 CALayer…
IOS 杂笔-19(属性与变量的优缺点) 在前面的文章中我介绍了属性与变量的区别.这篇博客我将会简单介绍一下属性与变量的优缺点. 变量 优点: 访问速度快 缺点: 使用不灵活 属性 缺点: 耗时 优点: 防止对象被提前创建 防止对象重复创建 防止对象使用时,还没被创建 可以在懒加载方法里面,进行初始化操作…
iOS 杂笔-26(苹果禁用热更新) 苹果爸爸禁用热更新小伙伴们有什么想说的吗? 苹果爸爸禁用热更新小伙伴们有什么想说的吗? 苹果爸爸禁用热更新小伙伴们有什么想说的吗?…
kvc: 键值编码的基本概念 1:键值编码是一个用于间接访问对象属性的机制,使用该机制不需要调用存取方法和变量实例就可以访问对象属性. 2:键值编码方法在Objective-C非正式协(类别)NSKeyValueCoding中被声明,默认的实现方法由NSObject提供. 3:键值编码支持带有对象值的属性,同时也支持数值类型和结构.非对象参数和返回类型会被识别并自动封装/解封. KVC 再某种程度上提供了访问器的替代方案.不过访问器方法是一个很好的东西,以至于只要是有可能,KVC也尽量在访问器方…
转自:http://my.oschina.net/caijunrong/blog/510701 一.对于KVC模式(Key Value Coding): 1.其实在实际开发中用得比较多得就是:接收到json数据之后,通过解析,解析成NSDictionary,然后再把字典对应的字段建立一个Model,在Model里面自定义一个类方法+(instancetype)modelWithDictionary:(NSDictionary *)keyDictionary方法中调用 [self setValue…
首先是一段对MD5的简介 *出自一位大牛之手* Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护 是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现. MD5算法具有以下特点: 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有…
解决自定义Tableviewcell显示错乱问题 要是要解决这个问题,就需要用到UITableviewCell的prepareForReuse方法 cell被重用如何提前知道? 重写cell的prepareForReuse 官方头文件中有说明.当前已经被分配的cell如果被重用了(通常是滚动出屏幕外了),会调用cell的prepareForReuse通知cell.注意这里重写方法的时候,注意一定要调用父类方法[super prepareForReuse] .这个在使用cell作为网络访问的代理容…
readonly是我们并不陌生的属性. 但是他也有值得我们注意的地. 属性如其名-只读-也就是说我们只能读取-不能进行写操作 当我们尝试进行写操作时会如下 但是这并不意味着我们不可以改变其内部的属性 height 里有一个height属性,我们尝试对其赋值 并没有提示任何错误 -由此可以得出对于readonly我们虽然不可以改变其本身,但是我们可以改变,其下面的属性-…
*owner在开发中现在已经很少用了 有兴趣的童鞋可以看看* 我们遇到owner通常是在类似 [[[NSBundle mainBundle] loadNibNamed:@"Food" owner:nil options:nil]lastObject ]中遇到的. 我们一般的做法是直接把owner设置为self(通常是咋自定义cell时). 但是在定义其他控件时我们就需要想一想为什么,或者还有什么需要注意的. 下面我开始对owner进行介绍. 先仔细观察下面gif的内容: 不难发现,我在…
在实际开发中很多时候我们都为了控件frame的操作焦头烂额. 例如:我们只想要获取view的width. 我们可以这么操作:view.frame.size.width 有时我们想要改变view的width然而我们不能直接改变->需要三部曲. 让人抓狂,为了解决这里烦恼我们可以通过改变类别来达到理想的效果. 下面是类别的.h文件: // // UIView+CXExtension.h //// // Created by ma c on 16/3/25. // Copyright © 2016年…
我想题目说的或许不是很清楚,那么现在我详细介绍一下这篇随笔内容. 在外部无法改变UIVIew控件的size. 这里说是UIView,但是事实上,是大多数控件而绝非仅UIView. 想要实现在外部无法改变size该怎么做呢. 首先是重写setFrame使其规定本身size,如下 // // TestView.m // CX-实现在外部无法改变UIView的Size // // Created by ma c on 16/3/25. // Copyright © 2016年 xubaoaichiyu…
今天在写项目的时候,遇到了一件令人抓狂的事情. 正如标题所示,被这个方法弄的团团转. -(void)scrollViewDidEndScrollingAnimation:是协议里的方法. 意味当动画结束时调用. 动画?为什么会有动画呢? setContentOffset: animated: -这一方法是有动画的 按照平时的习惯 在animated后我设置了NO 这一设置没什么关系. 彻底击碎了我的心,当我调试bug时根本没有想到回事这里的bug. 之所以发现这里是因为我发现在-(void)sc…
栈区(stack):由系统自动分配,一般存放函数参数值.局部变量的值等.由编译器自动创建与释放.其操作方式类似于数据结构中的栈,即后进先出.先进后出的原则. 例如:在函数中申明一个局部变量int b;系统自动在栈中为b开辟空间. 堆区(heap):一般由程序员申请并指明大小,最终也由程序员释放.如果程序员不释放,程序结束时可能会由OS回收.对于堆区的管理是采用链表式管理的,操作系统有一个记录空闲内存地址的链表,当接收到程序分配内存的申请时,操作系统就会遍历该链表,遍历到一个记录的内存地址大于申请…
答:首先,类簇是可以继承的,并不是不可以.例如,我们可以选择继承NSSting,但是此时你用你自己设定的类去调用NSSting的一些方法时,会存在无法实现的问题,这是为什么呢. 1.类簇里有很多私有的类,并且这些类实际上也是“类簇的子类”. 2.我们创建的是子类,子类是无法调用负父类的其他 子类的. 故,我门不提倡继承类簇.…
var 是 variable的缩写形式,是变量的意思 ,是可改变的,并不是数据类型. let 是常量的意思,不可改变的.…
在我们查看原生api时,我们不难发现,有些api的后面有着->UI_APPEARANCE_SELECTOR 那么我可以很高兴的说我们可以通过appearance对象来统一设置.十分巧妙. 例如: 我们可以通过如下方法对对象进行统一设置,从而提高编码效率. NSDictionary * attrs = @{ NSFontAttributeName:[UIFont systemFontOfSize:], NSForegroundColorAttributeName:[UIColor grayColo…
base64加密是可逆的,因此并不是很安全,在一些注重安全的地方很少用到,但是在普通传输中可以使用. 切忌,base64加密是不安全的. // // ViewController.m // CX-Base64加密 // // Created by xubaoaichiyu on 16/3/22. // Copyright © 2016年 xubaoaichiyu. All rights reserved. // #import "ViewController.h" @interface…
loadView; This is where subclasses should create their custom view hierarchy if they aren't using a nib. Should never be called directly.这是当他们没有正在使用nib视图页面,子类将会创建自己的自定义视图层.绝不能直接调用. ------------viewDidLoad;Called after the view has been loaded. For vi…
在介绍两种类方法之前,NSObject Class Reference里对这两个方法说明: +(void)initialize The runtime sends initialize to each class in a program exactly one time just before the class, or any class that inherits from it, is sent its first message from within the program. (Th…
1.timer都会对它的target进行retain,我们需要小心对待这个target的生命周期问题,尤其是重复性的timer. 2. timer不是一种实时的机制,会存在延迟,而且延迟的程度跟当前线程的执行情况有关. 3. 必须得把timer添加到runloop中,它才会生效. 4.要让timer生效,必须保证该线程的runloop已启动,而且其运行的runloopmode也要匹配.…
属性可以用点语法,比如self.xxx,在外部调用也同样可以someClass.xxx. 属性实际上是对一组set和get方法的简单封装(oc的get方法没有get前缀),同样会自动生成一个私有的成员变量(名称为:下划线+属性名). 成员变量无论是全局还是局部的,都只能在本类或当前函数中使用,在其之外的地方无法直接调用(可以通过间接的方式调用). 在本类使用时,属性self.xxx会给私有的_xxx变量增加一次引用计数,相当于多retain了一次.如果不使用ARC,分别给普通变量和属性赋值,打印…
(1)内存管理相关参数 Retain:对对象release旧值,retain新值(适用于OC对象类型) Assign:直接赋值(默认,适用于非oc对象类型) Copy:release旧值,copy新值 (2)是否要生成set方法(若为只读属性,则不生成) Readonly:只读,只会生成getter的声明和实现 Readwrite:默认的,同时生成setter和getter的声明和实现 (3)多线程管理(苹果在一定程度上屏蔽了多线程操作) Nonatomic:高性能,一般使用这个 Atomic:…
1.协议的定义 @protocol 协议名称 <NSObject> //方法声明列表 @end; 2.如何遵守协议 (1)类遵守协议 @protocol 类名:父类名 <协议名称1,协议名称2> @end (2)协议遵守协议 @protocol 协议名称 <其他协议名称> @end; 3.协议方法声明中的关键字 (1)required (默认)要求实现,若没有实现则警告但不报错 (2)Optional 不要求实现 4.定义变量时遵守协议的限制 类名<协议名称>…
KVC(Key Value Coding) KVO(Key Value Observing) KVB(Key Value Binding) KVO是Cocoa的一个重要机制,他提供了观察某一属性变化的方法,极大的简化了代码.这种观察-被观察模型适用于这样的情况,比方说根据A(数 据类)的某个属性值变化,B(view类)中的某个属性做出相应变化.对于推崇MVC的cocoa而言,kvo应用的地方非常广泛.(这样的机制听起来类 似Notification,但是notification是需要一个发送no…
KVC, KVO作为一种魔法贯穿日常Cocoa开发,笔者原先是准备写一篇对其的全面总结,可网络上对其的表面介绍已经够多了,除去基本层面的使用,笔者跟大家谈下平常在网络上没有提及的KVC, KVO进阶知识.旨在分享交流. 目录: KVC的消息传递 KVC容器操作 KVC与容器类(集合代理对象) KVO和容器类 KVO的实现原理 KVC的消息传递 valueForKey:的使用并不仅仅用来取值那么简单,还有很多特殊的用法,集合类也覆盖了这个方法,通过调用valueForKey:给容器中每一个对象发送…