1.nonatomic
2.assign
3.strong
4.weak
5.instancetype
使部分类在编译时不使用ARC
-(可以让这们支持 retain release retainCount)
项目文件 - Build Phases - 找到.m文件双击 -加入Flags --->> -fno-objc-arc
让项目中的指定文件支持ARC 使用 -f-objc-arc (-f的意思是Flags)
将非ARC的项目转换为 ARC
Edit - Convert - To Objcetive-C ARC
ARC-处理循环引用
使用 weak 弱指针 一个用strong指针 一个用weak指针
Block (和函数类似-保存一段代码)
函数是在编译前就要将代码写好
void test() { NSLog(@“—————"); }
block是在程序运行时保存一段代码 指针的标识符是 * block的标识符是 ^ 也可以有型参 和 返回值
//定义了一个没有返回值 ,没有形参的 名为 myblock的 block 变量 block也是数据类型 void (^myblock)() = ^{ NSLog(@“———“); NSLog(@“———“); }; // 注意分号 // 利用block变量调用block内部的代码 my block(); // 调用方式与函数一样 带返回值和形参的 block 接收两个参数 返回两个参数的和 int (^sumblock)(int , int ) = ^(int a, int b){ return a+b; }; int c = sumblock(10,20);
void test3() { int a = 10; __block int b = 20; void (^block)(); block = ^{ // block内部可以访问外面的变量 //NSLog(@"a = %d", a); // 默认情况下,block内部不能修改外面的局部变量 // a = 20; // 给局部变量加上__block关键字,这个局部变量就可以在block内部修改 b = 25; }; block(); }
时间: 2024-10-13 12:45:06