zoukankan      html  css  js  c++  java
  • 协议

    #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

  • 相关阅读:
    Binary Tree Maximum Path Sum
    ZigZag Conversion
    Longest Common Prefix
    Reverse Linked List II
    Populating Next Right Pointers in Each Node
    Populating Next Right Pointers in Each Node II
    Rotate List
    Path Sum II
    [Leetcode]-- Gray Code
    Subsets II
  • 原文地址:https://www.cnblogs.com/studyios/p/3581385.html
Copyright © 2011-2022 走看看