关于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

1.category,覆盖原类的方法,即使不引用该category头文件,也能覆盖,respondsToSelector:方法也能响应。 2.category,不可以有私有变量,但是可以有@prop...
  • leikezhu1981
  • leikezhu1981
  • 2014年02月18日 19:57
  • 3087

【iOS知识学习】_协议(delegate)和类别(category)

在iOS开发中,协议和类别是用的非常多的功能。 协议(delegate):声明一系列的方法,可由任何类实施,即使遵守该协议的类没有共同的超类。协议方法定义了独立于任何特定类的行为。简单的说,协议就是定...
  • weasleyqi
  • weasleyqi
  • 2014年04月22日 23:03
  • 10080

iOS 常用Category类别分享

iOS 常用Category类别分享 字数1340 阅读86 评论2 喜欢8 前言      各位都知道,类别是一种为现有的类添加新方法的方式,利用Objective-C的动态运...
  • qq_30513483
  • qq_30513483
  • 2016年07月29日 20:34
  • 2634

Category 分类、类别 总结 - iOS

分类作用分类:可以给某一个类扩充一些方法(不修改原来类的代码)格式// 声明 @interface Person (分类名称)@end// 实现 @implementation Person (分类名...
  • zyq522376829
  • zyq522376829
  • 2016年08月13日 20:59
  • 1104

Xcode8中创建分类、协议等文件的方法

转自:command + n --->Object-C file------->File Tpye:Category/protocol. 转自:http://bbs.ithe...
  • jacker_2014
  • jacker_2014
  • 2016年11月22日 10:58
  • 3562

类别(Category)的作用(二)---对私有方法的前向引用

在上一篇文章 类别(Category)的作用(一)中,详细说明类别的第一个作用,接下来是类别的第二个作用。类别作用二:创建对私有方法的前向引用。 OC语法中,可以对类的实例变量加@private/@...
  • lxubin
  • lxubin
  • 2016年07月31日 12:51
  • 1551

iOS之类别(Category)、类扩展、继承的区别

iOS在2.0就已经推出类别(Category),它允许开发者在不改动原有类的情况下,对该类进行扩展使用。我们知道,OC 和 Swift 都具备单继承特性,我们也可以通过新建子类继承父类的方式,实现类...
  • LVXIANGAN
  • LVXIANGAN
  • 2017年08月01日 12:09
  • 287

给分类(Category)添加属性

给分类(Category)添加属性 字数626 阅读513 评论1 喜欢17 遇到一个问题,写了一个分类,但原先类的属性不够用。添加一个属性,调用的时候崩溃了,说是找不到getter、...
  • intheair100
  • intheair100
  • 2015年07月07日 17:37
  • 1619

Xcode7创建类别Category

1、File->new file 2、选择Category->next 3、next ->完成
  • u013935547
  • u013935547
  • 2016年05月17日 19:03
  • 6589

object-c学习:类别Category

一直不明白类别的意思,因为C和java都没有类似的概念。 看到如下的描述,比较清晰,供大家参考:    如果你想扩充一个类的功能,但又不想使用继承,你可以选择类别。 下面我们写一个Fracti...
  • yanfangjin
  • yanfangjin
  • 2012年03月21日 13:58
  • 2979
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol&nbsp
举报原因:
原因补充:

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