classdump出来有一个@property(nonatomic)注释为dynamic

class-dump出来形如这样:
@interface CMessageWrap : NSObject
{
}

@property(nonatomic) CMessageWrap *m_refMessageWrap; // @dynamic m_refMessageWrap;

前面没有
CMessageWrap *m_refMessageWrap
注释为// @dynamic m_refMessageWrap;
正常的成员变量应该为// @synthesize m_uiDownloadStatus吧

  • (void)CreateExtendInfoWithType:(uint32_t)arg1 retExtendInfo:(id )arg2
    后面有这样的方法,arg2参数需要传这个m_refMessageWrap参数类型为id

    这个方法反汇编后是这样一句话:
    arg2 = [CExtendInfoOfVoiceMsg alloc] init] autorelease];

参数arg2我通过下面两种方法都获取失败。
1、通过
id *&m_refMessageWrap = MSHookIvar<id *>(self, “m_refMessageWrap”)

2、通过
self. m_refMessageWrap
(把@property(nonatomic) CMessageWrap *m_refMessageWrap改为了@property(retrain,nonatomic) CMessageWrap *m_refMessageWrap)

这里的m_refMessageWrap好像是对类自身的引用吗?Objc基础不好,望狗神能够指导指导。。

@dynamic的property,意思就是setter和getter是自己指定的,而不是编译器帮你生成。你google一下就知道了。
如果你能拿到一个CMessageWrap对象,CMessageWrapObject. m_refMessageWrap就可以拿到这个property了

就是能取到CMessageWrap对象,但是m_refMessageWrap是nil,貌似是之后通过

  • (void)CreateExtendInfoWithType:(uint32_t)arg1 retExtendInfo:(id *)arg2 {
    arg2 = [CExtendInfoOfVoiceMsg alloc] init] autorelease];
    }
    这样一个方法传值进去的。
    我手动调用这个方法,可是arg2是一个(id *)的参数,而要传的m_refMessageWrap是一个(CMessageWrap *)相当于(id)。然后就不知道怎么办了。。。

class-dump出的id *你给改成id就好了,直接传m_refMessageWrap