• 协议


    #import <Foundation/Foundation.h>                        协议是一个类通过协议调用另一个类的方法  就调用的方式而言相当于用属性保存另一个类的对象 

    #import "One.h"                   只是协议通过是否实现了该协议里的方法来用一个指针指向一个对象  而属于则是直接赋值;       #import "Two.h"                                                  具体说就是一个类有一个类拥有一个会检测是否实现协议的指针 另一个类表明实现该协议

    int main(int argc, const char * argv[])                       表明时别的类是看不到的 只有拥有该协议的类才能知道 所以别的类是不能直接调用的

    {                           属性是调用set 和get 方法    两种方法都能在两个类之间进行转递信息    

     

        @autoreleasepool {

            

            // insert code here...

            NSLog(@"Hello, World!");

            One *one = [[One alloc]init];

            Two *two=[[Two alloc] init];

            one.li = two;    //设置代理

            [one print];        

        }

        return 0;

    }

     

    #import <Foundation/Foundation.h>

    @classOne;

    @protocol Xie <NSObject>   //One中声明一个协议 在另外的类中实现

    - (void)run:(One *)one;   //要实现的方法

    @end

    @interface One : NSObject

    @property (nonatomic ,weak) id <Xie> li;  //用来判断是否实现了协议

    - (void)print;

     

    @end

    - (void)print

    {

        

        if (_li && [_li respondsToSelector:@selector(run:)])

    //        判断是否实现了协议里的方法

        {

            [_li run:self];

        }

    }

    #import <Foundation/Foundation.h>

    #import "One.h"

    @interface Two : NSObject  <Xie> //表明实现了该协议

     

    @end

  • 相关阅读:
    java web 资源文件读取
    页面跳转
    验证码的随机图片
    spring 注解
    回文字符串系列问题
    【leetcode】Find All Anagrams in a String
    斐波那契数列
    【leetcode】 First Missing Positive
    Trapping Rain Water
    区间合并问题
  • 原文地址:https://www.cnblogs.com/studyios/p/3581385.html
Copyright © 2020-2023  润新知