• [Objective-c 基础


    A.概念

    1.用来声明方法(不能声明成员变量)
    2.只要某个类遵守了这个协议,相当于拥有了协议中得所有方法的声明
    3.属性
    (1)@required:默认,要求实现,不实现就会发出警告
    (2)@optional:不要求实现
    ————MyProtocol.h--------------
     1 @protocol MyProtocol
     2 @required
     3 - (void) test1;
     4 
     5 @optional
     6 - (void) test2;
     7 
     8 - (void) test3;
     9 
    10 @end
     
    4.父类遵循的协议,子类也会继承
     
    5.基协议
    (1)一个协议遵守了另外一个协议,就可以拥有其所有声明的方法
    ————MyProtocol.h———————
    1 #import <Foundation/Foundation.h>
    2 #import "MyProtocol.h"
    3 
    4 @protocol MyProtocol2 <MyProtocol>
    5 
    6 
    7 @end
     
    (2)基协议<NSObject>
    a..建议所有协议都遵循基协议
    @protocol MyProtocol <NSObject>
     
    b.动态遵守协议
        Person<MyProtocol2> *p = [[Person alloc] init];
     
    c.遵守多个协议
    @interface Person : NSObject <MyProtocol, MyProtocol2>
     
     
    6.协议和成员对象
    ===========Person.h====================
    1 @interface Person : NSObject <MyProtocol]] >
    2 
    3 @property(nonatomic, strong) id<MyProtocol2> obj;
    4 
    5 @end
     
    ===========main.c======================
    1 int main(int argc, const char * argv[]) {
    2     Person *p = [[Person alloc] init];
    3     Dog *d = [[Dog alloc] init];
    4    
    5     p.obj = d; // 警告,Dog没有遵守MyProtocol2协议
    6    
    7     return 0;
    8 }
     
    7.@protocol
    在.h可以先使用@protocol声明协议,在.m中再#import进来protocol的.h文件
    ==========Person.h=====================
     1 #import <Foundation/Foundation.h>
     2 
     3 @protocol MyProtocol;
     4 @protocol MyProtocol2;
     5 
     6 @interface Person : NSObject <MyProtocol]] >
     7 
     8 @property(nonatomic, strong) id<MyProtocol2> obj;
     9 
    10 @end
     
    ==========Person.m=====================
     1 #import "Person.h"
     2 #import "MyProtocol.h"
     3 #import "MyProtocol2.h"
     4 
     5 @implementation Person
     6 - (void)test1
     7 {
     8    
     9 }
    10 
    11 - (void)test3
    12 {
    13    
    14 }
    15 
    16 @end
     
     
  • 相关阅读:
    css text-transform 属性
    CSS3 @media编写响应式页面
    css :first child与:first-of-type的区别
    前端外语网站合集
    webpack配置自动添加CSS3前缀
    vue中extend/component/mixins/extends的区别
    js缓动函数
    [LeetCode] 78. 子集
    [LeetCode] 76. 最小覆盖子串
    [LeetCode] 75. 颜色分类
  • 原文地址:https://www.cnblogs.com/hellovoidworld/p/4119381.html
Copyright © 2020-2023  润新知