Figure 10- 92 Inspect cross references
Figure 10- 93 [CKTranscriptController sendMessage:]
OK, let’s figure out what’s [CKConversation sendingService]. Set a breakpoint on the 2nd
objc_msgSend of figure 10-93 and trigger it:
Process 343388 stopped
* thread #1: tid = 0x53d5c, 0x30a84e08 ChatKit`-[CKTranscriptController sendMessage:] +
372, queue = 'com.apple.main-thread, stop reason = breakpoint 2.1
frame #0: 0x30a84e08 ChatKit`-[CKTranscriptController sendMessage:] + 372
ChatKit`-[CKTranscriptController sendMessage:] + 372:
0x30a84e08: blx 0x30b3bf44 ; symbol stub for:
MarcoShouldLogMadridLevel$shim
0x30a84e0c: str r0, [sp, #36]
0x30a84e0e: movw r0, #23756
0x30a84e12: add r2, sp, #44
(lldb) p (char )$r1
(char ) $4 = 0x30b55f95 "__ck_defaultAccountForService:"
(lldb) po $r2
IMService[iMessage]
(lldb) po [$r2 class]
IMServiceImpl
So it’s an IMServiceImpl object. How do we get such an object? In fact, we’ve already done
this in section 10.2. Open IMServiceImpl.h, as shown in figure 10-94.