Block
andy_jiangbin
这个作者很懒,什么都没留下…
展开
-
Block教程系列
ios开发block的使用指南,以及深入理解block的内存管理,也适用于osx开发。 讨论范围:block的使用,内存管理,内部实现。 不包含的内容:gc arc下的block内存,block在c++中的使用。 Block介绍(一)基础Block介绍(二)内存管理与其他特性block介绍(三)揭开神秘面纱(上)block介绍(四)揭开神秘面纱(下)转载 2013-09-26 22:31:49 · 490 阅读 · 0 评论 -
iOS并发编程指南
原文地址:iOS并发编程指南作者:流云轻舞 iOS Concurrency Programming Guide iOS 和 Mac OS 传统的并发编程模型是线程,不过线程模型伸缩性不强,而且编写正确的线程代码也不容易。Mac OS 和 iOS 采取 asynchronous design approach 来解决并发的问题。 引入的异步技术有两个: Grand Cen转载 2013-12-05 09:37:22 · 548 阅读 · 0 评论 -
如何使用NSOperations和NSOperationQueues(二)
线程 每一个应用程序至少有一个主线程。线程的工作就是去执行一系列的指令。在Cocoa Touch中,主线程包含应用程序的主运行回路。几乎所有你写的代码都会在主线程中执行,除非你特别创建了一个单独的线程,并在这个新线程中执行代码。 线程有两个显著的特征: 1.每个线程都有访问你的应用程序资源的同等权限;它包括访问除了局部变量之外的所有的对象。所以,任何对象都可能被任意线程修改,使用并且转载 2013-10-29 11:16:10 · 872 阅读 · 0 评论 -
NSThread的使用
主要用于讲解NSThread多线程的使用; 从线程创建与启动、线程的同步与锁、线程的交互、线程池等等四个方面简单的讲解一下iphone中的多线程编程; 一、线程创建与启动 线程创建主要有二种方式: - (id)init; // designated initializer - (id)initWithTarget:(id)target selector:(SEL)selector转载 2013-10-28 11:16:58 · 452 阅读 · 0 评论 -
Block编程值得注意的那些事儿
一,前言 block 是在 iOS 4 中引入的新特性,它和 C++ 11 中的 lamba 表达式概念相似,有时候也被称为闭包。经过一段时间的使用,我发现要用对用好 block 还是有不少需要注意的地方,今天就来八一八这些值得注意的事儿。 本文源码下载:点此下载 二,block 注意事项 1,block 在实现时就会对它引用到的转载 2013-10-28 11:33:54 · 424 阅读 · 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转载 2013-10-24 10:03:26 · 513 阅读 · 0 评论 -
第一章 Blocks入门
以下部分使用实际的例子帮助你开始使用 Blocks。 1.1 声明和使用一个Block 使用^操作符来来声明一个 block 变量和指示 block 文本的开始。Block 本身的主 体被{}包含着,如下面的例子那样(通常使用 C 的 ;符合指示 block 的结束): 该示例的解析如下图: int multiplier = 7; i转载 2013-10-17 22:09:01 · 739 阅读 · 0 评论 -
关于block(二)
第三章 声明和创建Blocks 3.1 声明一个block的引用 Block 变量拥有 blocks 的引用。你可以使用和声明函数指针类似的语法来声明它 们,除了它们使用 ^修饰符来替代 * 修饰符。Block 类型可以完全操作其他 C 系统 类型。以下都是合法的 block声明: void (^blockReturningVoidWithVoidArgument)(转载 2013-10-17 22:08:20 · 507 阅读 · 0 评论 -
block介绍(三)揭开神秘面纱(上)
上一篇我们总结了各个情况下,block及其引用到的内存位置情况。 接下来几篇,我们将剖析编译器转码以及运行时库源码来一探block的究竟。 block到底是什么 我们使用clang的rewrite-objc命令来获取转码后的代码。 1、block的底层实现 我们来看看最简单的一个block: 图一 这个block仅转载 2013-09-26 22:34:16 · 520 阅读 · 0 评论 -
Block介绍(二)内存管理与其他特性
我们在前一章介绍了block的用法,而正确使用block必须要求正确理解block的内存管理问题。 这一章,我们只陈述结果而不追寻原因,我们将在下一章深入其原因。 一、block放在哪里 我们针对不同情况来讨论block的存放位置: 1.栈和堆 以下情况中的block位于堆中: 1 2 3 4 5 6转载 2013-09-26 22:33:22 · 468 阅读 · 0 评论 -
block介绍(四)揭开神秘面纱(下)
终于有空开始这系列最后一篇的编写。 这一篇,我们将看到block的内存管理的内部实现,通过剖析runtime库源码,我们可以更深刻的理解block的内存运作体系。 看此篇时,请大家同时打开两个网址(或者下载它们到本地然后打开): http://llvm.org/svn/llvm-project/compiler-rt/trunk/BlocksRuntime/runtime.c转载 2013-09-26 22:35:02 · 559 阅读 · 0 评论 -
Block介绍(一)基础
一、概述 Block是C级别的语法和运行时特性。Block比较类似C函数,但是Block比之C函数,其灵活性体现在栈内存、堆内存的引用,我们甚至可以将一个Block作为参数传给其他的函数或者Block。 二、热身 先看一个比较简单的Block例子: int multiplier = 7; int (^myBlock)(int) = ^(int num) { r转载 2013-09-26 22:32:33 · 555 阅读 · 0 评论 -
NSTimer总结
最近项目测试的时候会碰到集中情况,一种是压力测试的时候,批量发送数据会导致界面很卡顿,另外一种就是动画正在进行的时候,移动列表,会导致动画停止,如果不移动列表,动画马上接着运行。这是怎么回事呢,一开始个人认为移动列表,也就是触摸屏幕的时候把主线程阻塞了,看完代码不会引起这种情况,另一种就是移动列表时候,定时器被中断。通过网上查阅资料,是由于定时器创建时候用默认的RUnloop模式,而没有用trac转载 2015-04-20 10:46:29 · 371 阅读 · 0 评论