草庐IT

NSStackBlock

全部标签

ios - Objective-C block 。上下文捕获相同的变量/复制相同的 NSStackBlock

我真的对这个感到困惑。这是我的代码:for(SomeObject*objinobjects){[selfcheckAndDownloadForObject:obj];}-(void)checkAndDownloadForObject:(id)obj{switch(obj.type){开关内部...switchcasescopeNSString*someId=[object.IDcopy];NSIntegerrandom=arc4random();NSLog(@"workingonid=%@",someId);void(^flock)(NSData*data,NSError*error)

ios - 在 Arc 中,Block 在什么情况下是 __NSMallocBlock__ 或 __NSStackBlock__ 或 __NSGlobalBlock__?

-(id)getBlockArray{intval=10;return[[NSArrayalloc]initWithObjects:^{NSLog(@"1-%d",val);},^{NSLog(@"2-%d",val);},^{NSLog(@"3-");},nil];} 最佳答案 不捕获任何变量的block是全局block。由于block的所有实例都是相同的,编译器可以在程序的生命周期内静态分配一个副本。捕获变量(闭包)的block是堆栈或堆(malloc)block。block从堆栈开始,作为堆栈block。当第一次复制堆栈blo