Xcode-01ARC / Block

1.nonatomic  

2.assign

3.strong

4.weak  

5.instancetype

6.@class @property

使部分类在编译时不使用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();
}

 Block 使用 typedef

typedef int(^MyBlock)(int,int);

#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[])
{
    MyBlock sumBlock = ^(int a,int b)
    {
        return a+b;
    };
    int s = sumBlock(10,20);
    
    NSLog(@"sum = %d",s);
    return 0;
}

 

posted @ 2015-12-27 13:24  呆而肥  阅读(142)  评论(0编辑  收藏  举报