关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol&nbsp

转载 2016年06月02日 09:53:38
1.category,覆盖原类的方法,即使不引用该category头文件,也能覆盖,respondsToSelector:方法也能响应。
2.category,不可以有私有变量,但是可以有@property的声明,property的声明只是声明了该类的set,get方法(需要引用该category的头文件),但是category实现的m文件里面根本就没有生成这两个方法,所以你使用self.xxx时,会挂掉,错误提示:没有get/set方法。
你在category的m文件里面@synthesize 也无法声明,
也就是说,有声明,无实现。
3.category的静态方法,可以使用,
即使不声明,而是直接去实现,
调用的时候(无需引用category的h文件)虽然会有警告,但依然会执行。
调用的时候,只能用类名,用对象的话,会挂掉。


关于协议@Protocol
协议不能实例化,所以不能有实例变量(或者叫私有变量),但是可以有@property声明,这个声明,只是告诉别人这个协议里面有set,get方法而已。
注意:尽量不要在@Protocol用@property声明,很容易出毛病,特别是输出属性时。
如果要使用@property的话,可以参考 UITextInputTraits,这个官方协议里面都是@property

协议时可以有静态函数的。这个和java里面的接口有点冲突,接口时不可以有静态函数的。
协议里面不能定义static常量,定义时没错,一旦引用该文件,但编译报错


非正式协议就时一个分类,category,用于根类的category。
例如@interface NSObject (类别名称)
但是在object-2.0中,已经用@optional代替了非正式协议。

关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol&nbsp

转自: 作者:舍得333 主页:http://blog.sina.com.cn/u/1509658847 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明,...

IOS开发基础Object-C(13)—— protocol协议

今天,来给大家讲解一下OC中@protocol的用法,什么是protocol呢?从字面的意思上来说是协议的意思,那么到底什么是协议呢?那我们来普及一下协议的概念。 协议的概念 (1)协议相当于没有...

Object-C 学习笔记(二十)---类目(类别)Category

类目:可以扩充不能被继承的类的功能(方法),属于公有,跟在类里写没区别可以被子类继承,一般不要覆盖原来类的方法,因为延展的执行级别比原本类高. 注意: (1)不能添加实例变量        ...

object-c学习:类别Category

一直不明白类别的意思,因为C和java都没有类似的概念。 看到如下的描述,比较清晰,供大家参考:    如果你想扩充一个类的功能,但又不想使用继承,你可以选择类别。 下面我们写一个Fracti...

object-c category 和 protocol

这两个都是mac下的协议,用法有点像C++中的函数重载和虚函数。 首先Category: 它可以给原有的类增加新的方法,而不用重新建一个类,然后在原有的类的基础上使用这个方法,但是不能给类增加新的数...

Object-C 分类(Category) 和 扩展(Extension)

分类(Category)分类作为一种编译的手段,允许通过类添加方法来扩展原有类。但只能是方法,不能够添加实例变量的扩展。常用文件名 类名+分类名.h(.m) Pay attention here, ...
  • zesicus
  • zesicus
  • 2015年12月01日 11:29
  • 469

Object-C基础(9)——多态、类别、扩展与协议

多态     多态的概念和产生     变态:相同类型的对象,在同一件行为(方法),但某个对象表现成与众不同的行为(态),此时就称之为变态。     多态:相同类型的对象,在执行同一个方法时,表...

Object-C中的协议Protocol

在写java的时候都会有接口interface这个概念,接口就是一堆方法的声明没有实现,而在OC里面,Interface是一个 类的头文件的声明,并不是真正意义上的接口的意思,在OC中,接口是由一个...

Object-C中的协议Protocol

在写java的时候都会有接口interface这个概念,接口就是一堆方法的声明没有实现,而在OC里面,Interface是一个 类的头文件的声明,并不是真正意义上的接口的意思,在OC中,接口是由...

Object-C中的代理协议Protocol

在OC中的代理协议Protocol和java中的接口有点像,在java中一个类如果实现一个接口,那么该类必须实现该接口中的方法,而在OC中,类似接口的功能是有代理协议Protocol来实现的,协议中定...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol&nbsp
举报原因:
原因补充:

(最多只允许输入30个字)