码迷,mamicode.com
首页 > 其他好文 > 详细

QF——OC中把方法当做参数传递的两种形式(@selector和block)

时间:2015-03-15 15:05:44      阅读:556      评论:0      收藏:0      [点我收藏+]

标签:

@selector():

  可以理解@selector()就是取类方法的编号,他的基本行为等同于C语言中的函数指针(指向函数的指针)。它们通过传递方法的地址(或编号)来实现把方法当做参数的效果。

  不过在C语言中,可以直接把一个函数名赋给一个函数指针,但是在OC中不行,而是要通过@selector语法来取。它的括号里传入的是方法名,返回结果是

SEL类型,该类型本质上就是方法的编号(地址)。

  

 

block:

  block,名为代码块。它和函数很相似,有返回值,有名称,有参数列表。

格式:

返回值类型 (^代码块名)(参数类型列表) = ^(参数列表){  代码实现...  };

注意:花括号后面分号结尾。

  技术分享

 

需要注意的是:block默认情况下是不能访问block外部的局部变量的。除非在声明局部变量的时候加上__block关键字。(两个短下划线)

 

疑问:

@selector和block有什么异同?

block和函数有什么异同?

QF——OC中把方法当做参数传递的两种形式(@selector和block)

标签:

原文地址:http://www.cnblogs.com/wangerxiansheng/p/4339695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!