Open zhongwuzw opened 6 years ago
In C++
, struct
does have destructor function, so it's compatible with ARC
, and Objective-C
objects can as a member of struct
.
您好 有个问题 C++子线程回调回oc方法,oc方法中申请的内存是怎么管理(在C++的子线程回掉回来的),是oc申请的就走arc c回调的参数变量的管理 走C的逻辑 是这样么?
@hanjianfei , 能上一段code
么,展示一下C++
回调OC
方法,以及OC
中申请内存的方式(malloc
还是alloc
?),不是很理解。 😅
没有code,我在想这个问题。 alloc的方式
@hanjianfei 我从字面意思理解一下,首先C++
线程回调OC
方法,既然是回调,我理解成把OC
对象的实例方法当做函数指针?如果是这样的话,C++
是无法回调OC
方法的,因为调用OC
方法需要向id
对象发送消息,所以本身这一步就没法实现。
其次,不管是在什么情况下,OC
创建的对象都是在堆上,且使用ARC
或MRC
进行内存管理,所以比如C++
的Struct
有OC
成员,那么当Struct
析构时,会向OC
实例发送release
消息。
c++不能直接调用,可以在oc申请一个c方法,然后里边调用oc方法,看来原则还是谁申请,谁释放的问题啦
在 2018-03-01 18:18:16,"Wu Zhong" notifications@github.com 写道:
@hanjianfei 我从字面意思理解一下,首先C++线程回调OC方法,既然是回调,我理解成把OC对象的实例方法当做函数指针?如果是这样的话,C++是无法回调OC方法的,因为调用OC方法需要向id对象发送消息,所以本身这一步就没法实现。 其次,不管是在什么情况下,OC创建的对象都是在堆上,且使用ARC或MRC进行内存管理,所以比如C++的Struct有OC成员,那么当Struct析构时,会向OC实例发送release消息。
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
您好,有一个将objective C对象传递给C++成员变量的问题。当在oc中调用:CppClass cppObject = new CppClass(int n, ObjcObject objcObject)时,发现CppClass的构造函数并不能将n和objcObject的值赋给CppClass的成员变量。这种方法从根本上行得通吗?如果在CppClass中定义一个static structure,然后在构造函数中可以成功给这个static structure的成员变量赋值。感觉上如果在oc中调用C++ new operator的话,new出来的对象的成员变量或者没有分配内存,或者因为某种原因不能被赋值。
@lipeji C++类中是可以保存ObjC
对象作为成员的,我理解你是哪块写法可能有问题?
https://zhongwuzw.github.io/2017/11/16/Objective-C-%E4%B9%8B%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/