《Objective-c》Foundation框架 -(协议:protocol)

时间:2022-09-07 09:07:49

 

1.协议的定义

   @protocol 协议名称 <NSObject>
    // 方法列表......
   @end

   《Objective-c》Foundation框架 -(协议:protocol)

 2.如何遵守一份协议

  • 类遵守协议   

    @interface 类名 : 父类名 <协议名称1, 协议名称2>
 
    @end

          《Objective-c》Foundation框架 -(协议:protocol)   

 

      《Objective-c》Foundation框架 -(协议:protocol)

  • 协议遵守协议  

    @protocol 协议名 <协议名称1, 协议名称2>
 
    @end

 3.协议中方法声明的关键字

  • @required(默认)     

         要求实现方法,如果没有实现,就会有警告   

  • @optional     

         不要求实现方法

      《Objective-c》Foundation框架 -(协议:protocol)

 4.定义一个变量的时候,限制这个变量保存的对象遵守某个协议

  •    类名 <协议名称> *变量名;

  •    id <协议名称> 变量名;


   如果没有遵守对应的协议,编译器就会警告

 5.@property中声明的属性也可以用作一个遵守协议的限制

  •    @property(nonatomic, strong) 类名<协议名称> *属性名;

  •    @property(nonatomic, strong) id<协议名称> 属性名;

  • 《Objective-c》Foundation框架 -(协议:protocol)

 6.协议可以定义在单独的.h文件中,也可以定义在某个类中  

  • 如果这个协议只用在某个类中,应该将协议定义在该类中;

  • 如果这个协议用在很多类中,就应该定义在单独的.h文件中;

  • 《Objective-c》Foundation框架 -(协议:protocol)

 7.分类可以定义在单独的.h和.m文件中,也可以定义在原来类中

  • 一般情况下,都定义在单独的文件中,因为分类的作用就是在不改变原来类的前提下进行扩充方法;

  • 定义在原来中的分类,只要求能看懂语法;