摘要:
1、__block 在一个 block里头如果使用了在 block之外的变数,会将这份变数先复制一份再使用,也就是,在没有特别宣告下,对于目前的block 来说,所有的外部的变数都是只可读的,不可改的。 如果我们想让某个 block 可以改动某个外部的变数,我们则需要将这个可以被 block 改动的 阅读全文
摘要:
block本质上也是一个OC对象,因为它的内部也有个isa指针 block是封装了函数调用以及函数调用环境的OC对象 int main(int argc, const char * argv[]) { @autoreleasepool { int age = 10; int height = 10; 阅读全文
摘要:
主要区别在于为了防止NSString被修改。 当NSString的赋值来源也是NSString时,strong和copy的作用相同,都是给复制来源的引用计数加1; 当NSStrig的赋值来源是NSMutableString时,copy会做深拷贝,即重新生成一个新的对象,修改赋值来源不会影响NSStr 阅读全文
摘要:
一、访问了一个已经被释放的对象:nil,autorelease 二、访问数组类对象越界或插入了空对象:分类或者runtime替换 三、访问了不存在的方法:判断是否有,runtime修改 四、字节对齐:使用 memcpy 来作内存拷贝,而不是直接对指针赋值 五、堆栈溢出(过多的递归会导致栈溢出,过多的 阅读全文