箭头标注的地方,会产生崩溃问题,前面几行的MSHookIvar都是ok的,找了很多资料,也没有什么结论。。
- 已确认order对象有值
- 确认order对象有user_address的ivar存在,并且类型是string
不甚感激!
箭头标注的地方,会产生崩溃问题,前面几行的MSHookIvar都是ok的,找了很多资料,也没有什么结论。。
不甚感激!
lldb调试一下吧,光想想不明白的
看他为什么返回0x19,整个MSHookIvar就几行代码
你手动实现一下MSHookIvar,一个个api检查,看问题出在哪里
也手动实现过MSHookIvar,ivar对象获取到了没问题,objc_getIvar就会直接抛出异常
同在一个坑,蹲一个解答
template <typename Type_>
static inline Type_ &MSHookIvar(id self, const char *name) {
Ivar ivar(class_getInstanceVariable(object_getClass(self), name));
#if __has_feature(objc_arc)
void *pointer(ivar == NULL ? NULL : reinterpret_cast<char *>((__bridge void *)self) + ivar_getOffset(ivar));
#else
void *pointer(ivar == NULL ? NULL : reinterpret_cast<char *>(self) + ivar_getOffset(ivar));
#endif
return *reinterpret_cast<Type_ *>(pointer);
}
就三个api,在哪一个出错没用lldb跟出来吗,手写一下也行啊
MSHookIvar正常返回了 但是返回的是个无效的内存地址