文档章节

OC语言自学《十二》---- OC(block、@property)

罗眯眯
 罗眯眯
发布于 2014/04/08 21:00
字数 515
阅读 1532
收藏 8
OC

一、block    

  • 如何定义block变量
    • int (^sumblock)(int,int)
  • 如何利用block封装代码
//有参数,无返回值
^(int a, int b){
     return a + b;
};

//没有参数,没有返回值    
^{ 

}
  • block访问外部变量
    • block内部可以访问外部的变量
    • 默认情况下,block内部不能修改外面的局部变量
    • 给局部变量加上_block关键字,这个局部变量就可以在block内部修改
  • 利用typedef定义block类型

typedef int (^MyBlock)(int,int);
    
    //以后可以利用Myblock这种类型来定义block变量
    MyBlock sum = ^(int a, int b){

    return a + b;
};

//或者 
MyBlock mb1,mb2;    

mb1 = ^(int a, int b){
    return a + b;
};

二、@protocol协议 

  • 协议的定义
@protocol 协议名称 <NSObject>

    //方法声明列表...

@end
  • 如何遵守协议
    • 类遵守协议
@interface 类名 :父类名 <协议名称1,协议名称2>

    //方法声明列表...

@end
  •  协议遵守协议

@protocol 协议名称 <其他协议名称1, 其他协议名称2>

    //方法声明列表...

@end 
  • 协议中方法声明的关键字
    • @required(默认) ----- 要求实现,如果没有实现,会发出警告,不报错
    • optional ---- 不要求实现,怎样都不会有警告
  • 定义一个变量的时候,限制这个变量保存的对象遵守某个协议

//类名<协议名称> *变量名;
//id<协议名称> 变量名;
NSObject<MyProtocol> *obj
id<MyProtocol> obj2; 
  • 如果没有遵守对应的协议,编译器会发出警告
  • @property中声明的属性也可用做一个遵守协议的限制

//@property (nonatomic, strong) 类名<协议名称> *属性名;
//@property (nonatomic, strong) id<协议名称> 属性名;

@property (nonatomic, strong) Dog<MyProtocol> *dog;
@property (nonatomic, strong) id<MyProtocol> obj;
  • 协议可以定义在单独.h文件中,也可以定义在某个类中
    • 如果这个协议只用在某个类中,应该把协议定义在该类中
    • 如果这个协议用在很多类中,就应该定义在单独文件中
  • 分类则大部分时候是单独文件,不与类混

© 著作权归作者所有

罗眯眯
粉丝 43
博文 15
码字总数 30431
作品 0
高级程序员
私信 提问
iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包

本文章将从两个方向分别介绍 OC 与 swift 混编 1. 第一个方向从 swift工程 中引入 oc类   1. 1 如何在swift的类中使用oc类 1.2 如何在swift中实现oc的代理方法 1.3 如何在swift中实现oc的B...

鸿鹄当高远
2018/11/06
0
0
OC语言自学《十二》---- OC(Foundation框架部分知识总结)

NSRange 表示一个范围 主要用来操作字符串 CGPoint、NSPoint 通过设置x坐标和y坐标来设置某个点 IOS设备的x和y从左上角开始,y值往下面增加,x值往右面增加 CGSize、NSSize 表示一个矩形尺寸...

罗眯眯
2014/04/09
2K
0
Swift4.0基础知识回顾

简单介绍一下Swift Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序,Swift语言让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量更多了解Swift可以去《The...

博行天下
2017/12/06
0
0
(一)Block的实质初探

相关文章 (一)Block的实质初探 (二)Block之存储域 NSConcreteStackBlock,NSConcreteGlobalBlock,NSConcreteMallocBlock (三)Block之截获变量和对象 (四)Block之 _block修饰符及其存...

madaoCN
2017/10/21
0
0
探秘Runtime - Runtime介绍

该文章属于原创,转载请注明: https://www.jianshu.com/p/ce97c66027cd 是系统中重要的组成部分,面试也是必问的问题,所以是一个工程师必须掌握的知识点。 现在市面上有很多关于的学习资料...

刘小壮
2018/11/16
14
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.1K
14
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
38
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
40
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
61
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部