理解“块(block)”这一概念--Effective笔记

1,块是C,C++,Objective-C中的词法闭包。
块可以看作c里的函数指针,它将方法当作对象那样进行传递。其实块是一种代替函数指针的语法结构,原来使用函数指针时,需要用“不透明的void指针”来传递状态。而改用块之后,则可以把原来用标准c语言特性所编写的代码封装成简明且易用的接口。

2,块可接收参数,也可返回值。

3,块可以分配在栈或堆上,也可以是全局的。分配在栈上的块可拷贝到堆里,这一的话,就和标准的Objective-C对象一样,具备引用计数了。

定义块的时候,其所占用的内存区域是分配在栈中的。

当使用copy下,就可以把块从栈复制到堆了。

全局的块相当于单例,不会被系统回收。
如:void(block)()={
NSLog(@"block");
};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 《Objective-C高级编程》这本书就讲了三个东西:自动引用计数、block、GCD,偏向于从原理上对这些内容...
    WeiHing阅读 10,087评论 10 69
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,603评论 30 472
  • 2.1 Blcoks概要 2.1.1 什么是Blocks Blocks是C语言的扩充功能——“带有自动变量(即局部...
    SkyMing一C阅读 2,448评论 6 18
  • Block基础回顾 1.什么是Block? 带有局部变量的匿名函数(名字不重要,知道怎么用就行),差不多就与C语言...
    Bugfix阅读 6,904评论 5 61
  • 前言 Blocks是C语言的扩充功能,而Apple 在OS X Snow Leopard 和 iOS 4中引入了这...
    小人不才阅读 3,852评论 0 23

友情链接更多精彩内容