标签:"iOS"

target iphone simulator

模拟器与设备的区分宏被标准头文件定义为真假值,所以,其正确的用法为:#if TARGET_IPHONE_SIMULATOR
NSString * const Mode

block介绍(四)揭开神秘面纱(下)

终于有空开始这系列最后一篇的编写。
这一篇,我们将看到block的内存管理的内部实现,通过剖析runtime库源码,我们可以更深刻的理解block的内存运作体系。

看此篇时,请大家同时打开两个网址(或者下载它们到本地然后打开):
http://llvm.org/svn/llvm-project/compiler-rt/trunk/BlocksRuntime/runtime.c
http://llvm.org/svn/llvm-project/compiler-rt/trunk/BlocksRuntime/Block_private.h

Block介绍(二)内存管理与其他特性


我们在前一章介绍了block的用法,而正确使用block必须要求正确理解block的内存管理问题。
这一章,我们只陈述结果而不追寻原因,我们将在下一章深入其原因。

一、block放在哪里
我们针对不同情况来讨论block的存放位置:
1.栈和堆

Block介绍(一)基础

一、概述
Block是C级别的语法和运行时特性。Block比较类似C函数,但是Block比之C函数,其灵活性体现在栈内存、堆内存的引用,我们甚至可以将一个Block作为参数传给其他的函数或者Block。
 
二、热身
先看一个比较简单的Block例子:
int multiplier = 7;

教你把UIView切成任意形状

有时候layer.cornerRadius并不能满足需求,自己实现drawRect又太麻烦,怎么办?
多的不说,直接上代码:
 
- (void)dwMakeBottomRoundCornerWithRadius:(CGFloat)radius
{
CGSize size =