zoukankan      html  css  js  c++  java
  • objective-C protocol协议

      一切皆有可能

    协议定义了一组方法,让其他类实现。
    协议本身不是类。
    协议是一组未实现的方法。
    协议是一组有一定相关联。
    协议中的方法由其他人实现
     

    协议通过<>进行实现,一个类可以同时实现多个协议,中间通过逗号分隔;

    协议中不能定义属性、成员变量等,只能定义方法;

    协议只是定义了方法的列表,协议不负责实现方法,目的是让别的类来实现。

    两个协议重要协议:1. NSCopying  2,NSCoding

    @required表示必须实现的方法
    @optional表示可选实现的方法
     
    //
    //  main.m
    
    #import <Foundation/Foundation.h>
    
    #import "Student.h"
    
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            // insert code here...
            NSLog(@"Hello, World!");
            Student *stu=[[Student alloc]init];
            [stu finishTeask];
            [stu dontlate];
            [stu wearNeat];//可选
       
        }
        return 0;
    }
    在协议中个默认的方法都是必须实现的
    协议有两个关键字:@required和@optional
    @required表示必须实现的方法
    而@optional表示可选实现的方法
    //
    //  Scsy.h
    
    #import <Foundation/Foundation.h>
    //@protocol Scsy协议<父类>
    @protocol Scsy <NSObject>
    @required//必须实现
    //声明
    //完成作业
    -(void)finishTeask;
    //不迟到
    -(void)dontlate;
    @optional//可选
    //衣着整洁
    -(void)wearNeat;
    //
    //  Student.h
    
    #import <Foundation/Foundation.h>
    #import "Scsy.h"    
    @interface Student : NSObject<Scsy>
    
    @end
    //
    //  Student.m
    
    #import "Student.h"
    
    @implementation Student
    -(void)finishTeask{
        NSLog(@"完成作业");
    }
    -(void)dontlate{
        NSLog(@"不能迟到");
        
    }
    -(void)wearNeat{
        NSLog(@"衣着整洁");
    }
    @end
  • 相关阅读:
    C++头文件相互引用,最好一个#include,另一个class C;
    Git 安装配置
    loadrunner字符串赋值
    loadrunner 调用外部dll
    redis启动、清缓存命令
    solr-6.4.1 学习安装与配置 和 Elasticsearch(1.5.2)学习文档
    分页
    JS原型理解
    angular2 依赖注入新坑。
    javascript数组传值与地址。
  • 原文地址:https://www.cnblogs.com/wyhwyh2114/p/4927721.html
Copyright © 2011-2022 走看看