前言
从ChatRoomInfoViewController 探索
Nov 19 13:16:31 iPhone WeChat[2804] <Warning>: KNHooklog :-(void)addMember(have 0 value)
return:(null)
object:<ChatRoomInfoViewController: 0x16925a00>
##########################################
void -[ChatRoomInfoViewController addMember](void * self, void * _cmd) {
r0 = self;
r7 = (sp - 0x14) + 0xc;
r4 = sp - 0xc8;
asm { bfc r4, #0x0, #0x3 };
sp = r4;
r5 = r0;
r5->m_bDeleteStatus = 0x0;
loc_1c0d080(r5, @selector(updateMemberView), 0x0);
AddMemLogic
r4 = *ivar_offset(m_addMemLogic);
if (*(r5 + r4) == 0x0) {
loc_1c0d080(@class(AddMemLogic), @selector(alloc));
*(r5 + r4) = loc_1c0d080();
loc_1c0d090(*(r5 + r4), *(r5 + r4));
loc_1c0d080(*(r5 + r4), @selector(setM_delegate:), r5);
loc_1c0d080(*(r5 + r4), @selector(setM_viewScene:), 0x2);
}
值得重点研究的方法
ChatRoomInfoViewController loadMemberList
AddMemLogic start
void -[AddMemLogic start:](void * self, void * _cmd, void * arg2) {
objc_storeStrong(*ivar_offset(m_arrMemberList) + self, arg2);
r10 = [arg2 retain];
r6 = objc_loadWeakRetained(*ivar_offset(m_delegate) + self);
r5 = [[r6 getViewController] retain];
[ChatRoomUtils openAddContactWithMemberList:r2 inViewController:r5 delegate:self];
[r10 release];
[r5 release];
loc_2868adc(r6, @selector(openAddContactWithMemberList:inViewController:delegate:), r10);
return;
}
MultiSelectContactsViewController
r6 = [[MultiSelectContactsViewController alloc] init];
MMConfigMgr
r5 = [[r10 getService:[MMConfigMgr class]] retain];
r8 = [[MMUINavigationController alloc] initWithRootViewController:r6];
[stack[2008] PresentModalViewController:r8 animated:0x1];