黑马程序员 block,protocol

#import <Foundation/Foundation.h>

// 利用typedef创建block

typedef int (^MyBlock) (int,int);

// <>表示遵守协议

@protocol MyProtocol <NSObejct>

/*

1.reqiured:要求实现方法,不实现方法编译器会发出警告

2.optional:不要求实现方法

3.默认情况下为reqiured

4.协议之间可以相互遵守,一个协议可以遵守多个协议<....,....,....>

5.一个类也可以遵守多个协议<....,....,....>

*/

-(void)tset1;

@reqiured

-(void)test2;

-(void)test3;

@optional

-(void)test4;

@end

// 代表Person类遵守协议,可以使用协议里的所有方法声明

@interface Person : NSObject <MyProtocol>

// 调用这个id必须遵守MyProtocol这个协议

@proterty (nonatomic, retain) id <MyProtocol> car;

@end

@implementation Person

// 要求实现

- (void)test1

{

NSSLog(@"test1实现!");

}

- (void)test2

{

NSSLog(@"test2实现!");

}

- (void)test3

{

NSSLog(@"test3实现!");

}

- (void)test4

{

}

@end

@interface Car : NSObject <MyProtocol>

@end

@implementation Car

@end

@interface Book : NSObject

@end

@implementation Book

@end

int main()

{

// block代码的书写规范

MyBlock sumBlock = ^(int a, int b)

{

return a+b;

}

NSLog(@"%d",sumBlock(10, 15));

Person *p = [[Person alloc] init];

Car *car1 = [[Car alloc] init];

// Car必须遵守MyProtocol协议才能赋给_car

p.car = car1;

return 0;

}

时间: 2024-08-10 16:08:03

黑马程序员 block,protocol的相关文章

黑马程序员— block、protocol和Foundation

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 上一章我们学习了OC内存管理的相关知识,了解了OC程序在运行中对象及变量是如何释放以达到不占用内存的效果.本章我们来学习OC的block,protocol协议和Foundation框架. 第一讲     block 1. block简介 block封装了一段代码,可以在任何时候执行 block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值. 苹果官方建议尽量多用block.

黑马程序员——有关protocol的小结

在OC程序中经常会有这样的问题就是一个类想让其他类帮自己实现某些方法,然后再将结果返回给这个类:如何让一个类要找的代理去实现自己想要的方法呢? 这样就需要有一个协议,让能遵守协议的其他类都能实现协议中的方法声明,成为该类的代理. protocol的使用原则: 1.可以用来声明很多方法,但是不能声明成员变量. 2.只要一个类遵守了这个协议,就相当于拥有了这个协议中所有的方法声明,然后在自己的.m文件中实现就行了. 3.只要父类遵守了这个协议,就相当于子类也遵守了这个协议. protocol的使用方

黑马程序员-block代码块和protocol协议

一.block block是一个变量,这个变量类似c语言中的函数指针,在回调场合用的特别多.它可以封装代码,有返回值有形参.下面通过代码来说明block的定义和使用. 首先来看没有返回值没有形参的block 1 void (^myblock)() = ^{ 2 NSLog(@""); 4 }; 有返回值有形参的block 1 int (^sumblock)(int, int) = ^(int a, int b){ 2 return a + b; 3 }; 4 5 int c = sum

黑马程序员----block

1.block的基本使用 block用来保存一段代码: block的标志: ^: block跟函数很像: 可以保存代码: 有返回值: 有形参: 调用方式一样: 2.没有返回值.没有形参的block 先定义一个block变量:如:myBlock: 利用block变量调用block里面的代码: 3.有返回值和形参的block 先定义一个block变量:如:sumBlock: 利用block变量调用block里面的代码: 4.利用typedef定义block类型 先定义Myblock类型: 利用定义过

黑马程序员-OC学习笔记之block

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9426    Accepted Submission(s): 4151 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做par

黑马程序员—oc语言学习心得—block

黑马程序员—oc语言学习心得—block -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,程序一般用typedef定义一个block类型 然后调用 typedef void(^xxx)(); 可使用助记符 inlineblock 2,Block内部可以访问外部变量:默认情况下,Block内部不能修改外部的局部变量 给局部变量加上__block关键字,则这个局部变量可以在block内部进行修改. 3,block的作用: 利用block封

黑马程序员_Java网络编程

1,IP地址和InetAddress IP地址是互联网上每台计算机都有的自己的标记,IP地址分为5类,A类保留给政府,B类给中等规模的公司,C类给任何需要的人,D类用于组播,E类用于实验. A类  1.0.0.1-126.255.255.254  B类  128.0.0.1-191.255.255.254   C类  192.0.0.1-223.255.255.254  D类 244.0.0.1-239.255.255.254 E类 240.0.0.1-255.255.255.254 在以后开发

黑马程序员——网络编程篇

------- android培训.java培训.期待与您交流! ---------- 概述   1.网络模型        (1).OSI参考模型        (2).TCP/IP参考模型   2.网络通讯要素         (1).IP地址        (2).端口号         (3).传输协议    3.过程        1,找到对方IP. 2,数据要发送到对方指定的应用程序上.为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识. 为了方便称呼这个数据,叫做端口(逻

黑马程序员_JAVA 基础加强学习笔记

一.面向对象 (一)继承  1.继承的好处: (1) 提高了代码的复用性. (2) 让类与类之间产生了关系,提供了另一个特征多态的前提. 注意: 子类中所有的构造函数都会默认访问父类中的空参数的构造函数,因为每一个子类构造内第一行都有默认的语句super();  如果父类中没有空参数的构造函数,那么子类的构造函数内,必须通过super语句指定要访问的父类中的构造函数. 如果子类构造函数中用this来指定调用子类自己的构造函数,那么被调用的构造函数也一样会访问父类中的构造函数. 2.final特点