iOS的category和protocol】的更多相关文章

很多时候我们需要扩展一下现有的类,增加一点功能.如果有源码,修改一下即可,如果是第三方的库,就要麻烦一些.在C++中我们使用类继承的方法来实现,在ObjectiveC中当然也可以这么做,不过ObjectiveC还提供的一种简单实用的方法,就是category,对于一些很微小的功能增加,或者就是增加一个方法方便使用,用category是最轻量级的. xCode中已经提供了增加category的引导,比如我们想增加以下UILabel的内容竖直对齐的方法,那么就需要如下进行一定的设置: 生成的文件名字…
开放封闭原则(OCP原则The Open-Closed Principle)是面向对象的核心设计所在.它是说,软件开发实体(类.模块.函数等)应该可以扩展,但是不能修改. 这个原则有两个特征,一个是说“对于扩展是开放的”,另一个是说“对于更改是封闭的”. 我们在编写任何app时,不要寄希望于需求是固定的.不变化的,这是不现实也是不科学的想法,既然需求一定会有变化,那么如何应对这种变化?也就是说.我们所设计的代码可以相对容易的修改,不至于新的需求一来,就将整个程序推倒重写?怎么样的设计才能面对需求…
property的本质是实例变量 + getter 和 setter 方法 category和protocol可以添加方法 category 和 protocol中可以添加@property 关键字 所以,在protocol中添加property时,其实就是添加了 getter 和 setter 方法,在实现这个protocol的类中,我们要自己手动添加实例变量 例: @synthesize name = _name; //此行代码即添加了实例变量及实现了protocol中属性的getter.s…
iOS中delegate.protocol的关系 分类: iOS Development2014-02-12 10:47 277人阅读 评论(0) 收藏 举报 delegateiosprocotolcategoryobject-c 刚开始接触iOS,对delegate.protocol这两个概念比较模糊.参考了一些资料,记录下来体会. 1.protocol           protocol和interface的概念类似,是object-c语法的一部分.protocol就是一系列不属于任何类的…
iOS类别(Category)与扩展(Extension) 苹果的官方文档 Category在iOS开发中使用非常频繁.尤其是在为系统类进行拓展的时候,我们可以不用继承系统类,直接给系统类添加方法,最大程度的体现了Objective-C的动态语言特性. #import @interface NSObject (Category) - (void)myMethod; @end 这是一个最简单的Category,作用于NSObject类,给NSObject添加了一个方法. 使用Category需要注…
category: 向现有的类中增加方法,同时提供方法的实现,现有类不需要做任何改动. protocol:(相当于Java或C#中的接口interface,当很多类都要需要类似的方法,但是方法具体实现因类的不同而不同的时候,需要用到protocol或interface,C++中不需要interface是因为C++支持多重继承,实现类似功能只需要各个类继承同一个基类即可) 现有的类如果要实现protocol就需要实现其中的方法,方法实现在现有的类中,现有类需要做改动.…
转自:http://www.cnblogs.com/chijianqiang/archive/2012/06/22/objc-category-protocol.html 面向对象永远是个可以吐槽的话题,从开始提出到推崇备至,到充满质疑,一路走来让人唏嘘不已.面向对象的思想可谓历史悠久,20世纪70年代的Smalltalk可以说是面向对象语言的经典,直到今天我们依然将这门语言视为面向对象语言的基础. 面向对象是大部分编程语言的基本特性,像C++.Java.Objective-C这样的静态语言,R…
(一)Category .什么是Category? category是Objective-C .0之后添加的语言特性,别人口中的分类.类别其实都是指的category.category的主要作用是为已经存在的类添加方法.除此之外,apple还推荐了category的另外两个使用场景. 可以把类的实现分开在几个不同的文件里面.这样做有几个显而易见的好处. 可以减少单个文件的体积 可以把不同的功能组织到不同的category里 可以由多个开发者共同完成一个类 可以按需加载想要的category 声明…
一.Protocol协议 我们都知道,在C#有个规范称之为接口,就是规范一系列的行为,事物.在C#中是使用Interface关键字来声明一个接口的,但是在OC中interface是用来声明类,所以用了另外一个关键字protocol来表示. 下面我们定义一个动物的协议AnimalDelegate,人Person需要实现这个协议. Person.h文件 Person.m文件 二.Category分类 何为分类呢?一听这个概念可能很模糊.从C#的角度来说,相当于扩展方法(可以在不修改原本类的情况下使用…
1.Category 1)分类/类别(category): 允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).用以扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之后的一对圆括号 "( )" 中. @interface QCStudent (Print) @end @implementation QCStudent (Print) @end 分类文件名使用符号"+"来分隔类和分类的名字(Xcode 会自动生成). QCStuden…