OC 类目、协议

类目:为现有的类添加新方法

1.需要添加该类的新方法,但是不能继承该类的情况下

类目使用需要注意的问题:

1.类目里面不能添加实例变量,但是类目可以声明属性,但必须实现set get 方法,在这两个实现方法里面依然不能使用自己添加的实例方法

2.类目里添加的方法不能和原类中的方法重名,否则会导致覆盖

3.一个类可以添加多个类目,但是类目名和方法名不能重复

4.类目中的方法可以成为原始类的一部分,和原始类方法级别相同,可以被子类继承

类目的创建与使用:

File:是类目的名称

File Type:是类型,这是选择Category

Class:是填写所要添加类目的类

//添加后的类目名

//在.h文件里添加方法-(void)hi;在.m文件实现

在main文件里调用,记得导入类目文件

这样,类目就创建并实现好

隐藏类目(延展):类目的私有方法

在需要添加类目的类的.m文件里面#import "类名"下面添加

//这一块就是延展(匿名类目)

@interface Student()

//建议把实例变量放在延展里面

{

NSInteger _age;

}//解决需要添加私有方法,但是又不能声明在头文件声明的矛盾

@property(nonatomic,strong)NSString* name;

//在这里声明私有方法

-(void)printHello;

@end

这样一个匿名类目就完成了,需要注意的是在main的文件里可以printHello方法不能使用,printHello是私有方法,不能给其他类使用,只能由匿名类目的类去调用

协议:是一套标准,这个标准里声明了很多方法,但是补关心具体这些方法是怎么实现的,具体的实现是由遵循这个协议的类去完成

OC里面继承关系是单继承,但有时候我们需要使用多继承,这时候我们就可以使用协议


File:协议名字

File Type:类型(选择Protocol)

//创建Student类,

Student.h文件

Student.m

实现协议里面的方法

在main文件里面实现

这样,一个简单的协议就已经实现

时间: 2024-10-20 18:52:43

OC 类目、协议的相关文章

iOS设计之--OC学习总结之延展类目协议

类目:为已知的类增加新的方法:延展:通知在本类的定义里使用类目来声明私有方法:协议:协议声明了可以被任何类实现的方法.注意:这些手段只能增加类的方法,并不能用于增加实例变量,要增加类的实例变量,只能通过定义子类来间接实现.1.类目1)声明类目@interface NSString (NumberConvenience)-(NSNumber *)lengthAsNumber;@end该声明具有2个特点.首先,现有类位于@interface关键字之后,其后是位于圆括号中的一个新名称.该声明表示,类别

OC 类目(category) 延展(extension) 协议(protocol)(摘抄)

Objective-c中提供了可以让我们扩展类定义的手段:类目,延展和协议.类目:为已知的类增加新的方法:延展:通知在本类的定义里使用类目来声明私有方法:协议:协议声明了可以被任何类实现的方法. 注意:这些手段只能增加类的方法,并不能用于增加实例变量,要增加类的实例变量,只能通过定义子类来间接实现. 1.类目 1)声明类目 @interface NSString (NumberConvenience) -(NSNumber *)lengthAsNumber; @end 该声明具有2个特点.首先,

OC中协议, 类目, 时间, 延展, 属性

必须接受marryprotocol协议, id<marryprotocol>基于类型的限定, 才能给实例变量赋值 @property (nonatomic, assign) id<marryprotocol> husband; 避免Optitonal没有实现的功能 if ([_husband respondsToSelector:@selector(driver)]) { [_husband driver]; } @required//必须实现的协议, 默认协议 - (void)s

OC 中 类目、延展和协议

Category : 也叫分类,类目. *是 为没有源代码的类 扩充功能 *扩充的功能会成为原有类的一部分,可以通过原有类或者原有类的对象直接调用,并且可继承 *该方法只能扩充方法,不能扩充实例变量 *添加的类目是一对 .h .m 文件,文件名为 原有类名 + 分类名 Extension :延展 *为能够获得源代码的类添加私有的实例变量和方法 *注意:延展操作的类是能够获得源代码的类(具有 .m 文件的类) *通过延展定义的方法属于私有方法,外界是没有访问权限的,只能在当前类的 .m 文件中访问

OC -- 类的类目 , 延展 , 协议

类目 分两部分: 1.系统已经写好的类目:按照功能对系统的类方法进行区分. 类目从@interface开始,后面是当前类名字,类名后是分类的功能, 到@end结束. 2.我们创建的类目,一般是为了把系统的类进行扩充. 对系统的类(例:NSString)添加文件Objective-C File {File:StringMethod; File Type:Category; Class: NSString}后,会自动出现@interface NSString (StringMethod).文件名为:

Objective-C中的类目与协议

类目的定义与类的定义相似: 1.声明 @interface NSString (CSayHi)       NSString是目标类:CSayHi是类目名称: 且后面没有 :NSObject 2.实现 @implementation NSString (CSayHi) 3.文件名 NSString+CSayHi 类目: 类目也成为分类(特征) 1.可以为已知的类添加方法,哪怕是你没有源代码的类: 2.通过类目添加方法会成为原始类的一部分: 3.与原类中的方法同级: 4.而且会被子类继承: 类目的

类目 (category),扩展(Extension)和协议(protocol) (转)

@类目-分类(category) 1.类目: 类目(也成类别:Category)是一种为现有类添加新方法的方式2.类目的局限性:1)类目无法向已有的类中添加实例变量: 2)如果类目中的方法和已有类中的方法名称冲突时,类目中的方法优先级高,发生这种情况,则已有类的原始方法永无天日,最好的办法是将自己扩展的方法和原始方法区分开来. 3.类目的作用:?       将类的实现分散到多个不同的文件中–      将多个类目的声明放入同一个.h文件中–      将实现放入多个.m方法中?       使

Objective-C中的类目,延展,协议

Objective-C中的类目(Category),延展(Extension),协议(Protocol)这些名词看起来挺牛的,瞬间感觉OC好高大上.在其他OOP语言中就没见过这些名词,刚看到这三个名词的时候,有种感觉这是不是学习的坎?这东西难不难?能不能学会?经过本人亲自验证,这三个东西理解起来还是蛮简单的,学过C++或者Java的小伙伴对比理解还是蛮轻松的.类目(Category)就是给已有的类扩充相应的方法,扩充的方法是公有的,类目还可以起到分模块的功能,下面会详细说到. 延展(Extens

[objective-c] 03 - 类目 延展 协议

本章主要讲解OC语言特性 类目(Category) 延展(Extension) 协议(Protocol) 1.类目 OC语言中的类目机制只有一个作用:为任何一个类添加方法 现在我们创建一个Student类 @interface Student : NSObject @property(nonatomic,strong)NSString * name; @end @implementation @end 如果想为Student类添加一个方法,现在有两种方法 直接修改Student类的源码,声明一个