Ios 为什么块在OC和c+中不同+;?
我用以下代码定义了一个块:Ios 为什么块在OC和c+中不同+;?,ios,objective-c,clang,block,Ios,Objective C,Clang,Block,我用以下代码定义了一个块: void(^blockA)(void) = ^{ NSLog(@"just a block"); }; NSLog(@"%@", blockA); 这是印刷品: DeepCopy[22740:832979] <__NSGlobalBlock__: 0x100002150> 为什么块不同?< /P>因为OC不是C++。我认为SOObjuleC主要是使用堆,C++更可能使用堆栈。CuthOutsCeSkaCurk OC CLANG到C++,
void(^blockA)(void) = ^{
NSLog(@"just a block");
};
NSLog(@"%@", blockA);
这是印刷品:
DeepCopy[22740:832979] <__NSGlobalBlock__: 0x100002150>
为什么块不同?< /P>因为OC不是C++。我认为SOObjuleC主要是使用堆,C++更可能使用堆栈。CuthOutsCeSkaCurk OC CLANG到C++,实现代码是变化的?事情是块似乎是一个堆栈变量。我不是一个全局变量或属性,所以我假设在转换到C++编译器时选择使用堆栈。你是什么意思“当我把它绑定到C++代码”?你是说你用了叮当作响的重写器?因为重写器通常不会生成与编译器相同的代码
struct __main_block_impl_0 {
struct __block_impl impl;
struct __main_block_desc_0* Desc;
__main_block_impl_0(void *fp, struct __main_block_desc_0 *desc, int flags=0) {
impl.isa = &_NSConcreteStackBlock;
impl.Flags = flags;
impl.FuncPtr = fp;
Desc = desc;
}
};