A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

10黑马币
如题,关于代理模式与Foundation框架的程序代码,急求

最佳答案

查看完整内容

#import "Student.h" @implementation Student -(void)study{ NSLog(@"子类继承新协议"); } @end #import "Person.h" @implementation Person -(void)test1{ NSLog(@"协议中test1方法执行了"); } -(void)test2{ NSLog(@"协议中test2方法执行了"); } //有多少个协议方法是required修饰的,就必须有实现几个 //optional的方法如果不实现不能调用,否则GG -(void)run{ NSLog(@"速度70迈"); } -(void)eat{ NS ...

1 个回复

正序浏览
  1. //
  2. //  main.m
  3. //  protocol的使用
  4. //
  5. //  protocol的实质是对于一些方法的声明,只是声明!!
  6. //  其中的方法声明主要有两种
  7. //  @required 必须实现的方法,不实现会警告
  8. //  @optional 可以选择去实现,但是不实现的方法不要去调用
  9. //  遵循某一protocol的类即拥有了全部的声明
  10. //  protocol不可以定义变量,也不可以使用@property
  11. //  协议的写的位置:
  12. //  在父类后,<>内写协议名
  13. //  一个类可以遵循多个协议,协议名之间用逗号分割
  14. //  遵循协议的父类的继承问题
  15. //  子类直接遵循父类遵循的协议并且继承父类实现的协议方法
  16. //  遵循协议的协议---协议名后<>
  17. //  协议的声明,若协议定义在引用后需要提前声明
  18. //  协议的声明--@protocol 协议名;
  19. //  内部协议---不单独成为一个文件,在只想让一个协议或者一个类去遵循时使用
  20. //  另外的用法
  21. //  用于接收遵循某协议的变量比如
  22. //  @property <Protocol1> NSString* name;
  23. //  代表这个name属性所在的NSString类必须遵循Protocol1协议
  24. #import <Foundation/Foundation.h>
  25. #import "Name.h"
  26. #import "Person.h"
  27. #import "Student.h"
  28. #import "Protocol1.h"
  29. #import "protocol2.h"
  30. int main(int argc, const char * argv[]) {
  31.     Person* per=[[Person alloc] init];
  32.     [per test1];
  33.     //[per test3]未实现的方法
  34.     [per test2];
  35.     [per run];
  36.     Student* stu=[[Student alloc] init];
  37.     [stu eat];//继承自父类
  38.     [stu sleepWithTime:8];//带参协议方法实验
  39.     [stu study];
  40.    // NSString* nama=@"luoye";
  41.   //  per.name=nama;  nama的类NSString不遵循协议,不能这么赋值
  42.     Name* name=@"luoye";
  43.     per.name=name;
  44.     NSLog(@"%@",per.name);
  45.     return 0;
  46. }
复制代码
  1. #import "Person.h"
  2. @protocol Protocol4;
  3. @interface Student : Person <Protocol4>

  4. @end
  5. @protocol Protocol4 <NSObject>
  6. -(void)study;
  7. @end
复制代码

#import "Student.h"

@implementation Student
-(void)study{
    NSLog(@"子类继承新协议");
}
@end


  1. #import <Foundation/Foundation.h>
  2. #import "Protocol1.h"
  3. @interface Name : NSString <Protocol1>

  4. @end
复制代码
  1. #import "Name.h"

  2. @implementation Name
  3. -(void)test1{
  4.     NSLog(@"协议中test1方法执行了");
  5. }
  6. -(void)test2{
  7.     NSLog(@"协议中test2方法执行了");
  8. }
  9. @end
复制代码
  1. #import <Foundation/Foundation.h>
  2. #import "Protocol1.h"
  3. #import "protocol2.h"
  4. @interface Person : NSObject <Protocol1,protocol2>
  5. @property (nonatomic,strong) id <Protocol1>  name;

  6. @end
复制代码

#import "Person.h"

@implementation Person
-(void)test1{
    NSLog(@"协议中test1方法执行了");
}
-(void)test2{
    NSLog(@"协议中test2方法执行了");
}
//有多少个协议方法是required修饰的,就必须有实现几个
//optional的方法如果不实现不能调用,否则GG
-(void)run{
    NSLog(@"速度70迈");
}
-(void)eat{
    NSLog(@"吃饭是幸福的");
}
-(void)sleepWithTime:(int)a{
    NSLog(@"睡个觉,一共%d小时",a);
}
@end
#import <Foundation/Foundation.h>
@protocol protocol3;//提前声明,因为定义在遵循前
@protocol protocol2 <protocol3>
-(void)run;
-(void)eat;

@end

@protocol protocol3 <NSObject>
-(void)sleepWithTime:(int)a;
@end
#import <Foundation/Foundation.h>

@protocol Protocol1 <NSObject>//这里是协议遵循其他协议
//这里不可以定义属性,也不可以使用@property,只是声明方法
//方法默认@required
-(void)test1;//与test2都是@required
@required
-(void)test2;
@optional
-(void)test3;
@end
这是protocol的用法细节代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马