首页 > 其他 > 详细

[Block retain]

时间:2015-08-13 14:37:23      阅读:173      评论:0      收藏:0      [点我收藏+]

[2015-8-13]

  1. Block = [globleblock retain]//Block仍在globle

  2. Block = [stackblock retain]//Block仍在stack

  3. Block = [globleblock copy]//Block仍在globle

  4. Block = [stackblock copy]//Block在heap,类型为__NSMallocBlock__

  5. Block = [mallocblock retain]//Block在heap,类型为__NSMallocBlock__,retainCount始终是1,但内存管理器中仍然会增加,需要谨慎使用

int main(int argc, const char * argv[]) {
    long (^b1)(NSString *) = ^long (NSString* argc){
        return 0;
    };
    int base = 100;
    long (^b3)(NSString *) = ^long (NSString* argc){
        
        return base+0;
    };
    
    long ret = b1(@"Yabao");
    typedef long (^B)(NSString *);
//    long (^b2)(NSString *) = [b1 retain];
    B b2  = [b3 copy];
    B b4  = [b1 copy];
    [b2 retain];
    long ret2 = b3(@"Harry");
    NSMutableArray *first_array = [[NSMutableArray alloc]initWithObjects:@"first",@"second", nil];
    NSLog(@"first_array retainCount = %zi",first_array.retainCount);
//    b2.retainCount;//error Memeber reference base type ‘b‘(aka ‘long (^b1)(NSString *)‘ is not a structure or union)
    [b2 release];//EXC_BAD_ACCESS
//    [b2 release];//EXC_BAD_ACCESS

    [first_array release];

[Block retain]

原文:http://my.oschina.net/u/1858606/blog/491760

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!