协议

#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

原文地址:https://www.cnblogs.com/studyios/p/3581385.html