
block
文章平均质量分 90
more2010wei
2010年6月毕于厦门大学软件工程专业,从事移动互联Symbian开发一年多,转为ios开发,对C,C++和Object-C等语言有心得,热衷于技术,喜欢研究算法,具有开源精神!Knuth是我心中永远的神话!
展开
-
Block使用中的一些疑问解答
本文主要是阐述一下Block中如何的使用外部变量以及block本身的内存管理。 先定义一个block变量,作为后续的例子中使用: typedef void(^BlockCC)(void); BlockCC _block; 1、block中引用外部变量block中可以直接使用外部的变量,比如 int number = 1; _block = ^(){ N转载 2013-04-09 14:45:59 · 1317 阅读 · 0 评论 -
ReactiveCocoa Weak-Strong Dance
AC在应用中大量使用了block,由于Objective-C语言的内存管理是基于引用计数的,为了避免循环引用问题,在block中如果要引用self,需要使用@weakify(self)和@strongify(self)来避免强引用。一、block的循环引用问题?123456789原创 2014-07-14 16:42:54 · 6879 阅读 · 0 评论 -
iOS中block(3)
block到底是什么我们使用clang的rewrite-objc命令来获取转码后的代码。1、block的底层实现我们来看看最简单的一个block:这个block仅仅打印栈变量i和j的值,其被clang转码为:首先是一个结构体__main_block_impl_0(从图二中的最后一行可以看到,block是一个指向__main_block原创 2014-07-04 10:28:58 · 1721 阅读 · 0 评论 -
iOS中Block(2)
一、block放在哪里我们针对不同情况来讨论block的存放位置:1.栈和堆以下情况中的block位于堆中:void foo() { __block int i = 1024; int j = 1; void (^blk)(void); void (^blkInHeap)(void); blk = ^{ printf(原创 2014-07-04 10:17:28 · 1456 阅读 · 0 评论 -
iOS中block(4)
内存管理的真面目objc层面如何区分不同内存区的blockBlock_private.h中有这样一组值:/* the raw data space for runtime classes for blocks */ /* class+meta used for stack, malloc, and collectable based blocks */ BLOCK_EXPORT原创 2014-07-04 10:45:13 · 1430 阅读 · 0 评论 -
iOS中Block(1)
一、概述Block是C级别的语法和运行时特性。Block比较类似C函数,但是Block比之C函数,其灵活性体现在栈内存、堆内存的引用,我们甚至可以将一个Block作为参数传给其他的函数或者Block。二、热身先看一个比较简单的Block例子:int multiplier = 7; int (^myBlock)(int) = ^(int num) { retu原创 2014-07-04 10:15:10 · 1472 阅读 · 0 评论 -
ARC下循环引用的问题
最初最近在开发应用时碰到使用ASIHttpRequest后在某些机器上发不出请求的问题,项目开启了ARC,代码是这样写的:@implementMainController- (void) fetchUrl{ ASIHTTPRequest *request = [ASIHTTPRequest requestWithUR转载 2014-07-17 17:51:08 · 2085 阅读 · 0 评论 -
你真的知道blocks在Objective-C中是怎么工作的吗?
例子1?123456void exampleA() { chara = 'A'; ^{ printf("%c\n", a); }();}这个例子:A.始终能够正常运行 B.只有在使用ARC的情况下才能正常运行C转载 2014-07-17 17:19:16 · 2403 阅读 · 0 评论 -
MRC下安全的Block
iOS4以后引入的block,一个比较方便且实用的功能。但是自己在开发的时候遇到了不少的坑,很多都是和内存管理相关的,后来iOS5.0以后有了ARC,有了__weak关键字,所以block使用也就更安全了。 但是,吐槽下我们公司。对于像我们公司这种,还在支持iOS4.3,还在用MRC的来说,很多后来方便的框架和工具都不能用了。而那个坑还是那个坑。 最近在看C++的东西,无意中又想起了这转载 2014-07-17 14:59:05 · 5892 阅读 · 2 评论 -
block
一、什么是Blocks Block是一个C级别的语法以及运行时的一个特性,和标准C中的函数指针类似,但是其运行需要编译器和运行时支持,从ios4.0开始就很好的支持Block。二、在ios开发中,什么情况下使用Block Block除了能够定义参数列表、返回类型外,还能够获取被定义时的词法范围内的状态(比如局部变量),并且在一定条件下(比如使用__block变量)能转载 2013-04-09 17:48:00 · 2094 阅读 · 0 评论 -
iOS中block实现的探究
[0. Brief introduction of block]Block是iOS4.0+ 和Mac OS X 10.6+ 引进的对C语言的扩展,用来实现匿名函数的特性。用维基百科的话来说,Block是Apple Inc.为C、C++以及Objective-C添加的特性,使得这些语言可以用类lambda表达式的语法来创建闭包。用Apple文档的话来说,A block is an ano转载 2013-04-09 14:58:23 · 1367 阅读 · 0 评论 -
AFNetworking2.0的源码解析
(via:bang's blog) 最近看AFNetworking2的源码,学习这个知名网络框架的实现,顺便梳理写下文章。AFNetworking的代码还在不断更新中,我看的是AFNetworking2.3.1。 本篇先看看AFURLConnectionOperation,AFURLConnectionOperation继承自NSOperation,是一个封装好的任务单元,在这里构翻译 2014-09-02 10:41:25 · 7174 阅读 · 1 评论