Objc_msgsend后面带了个$,这是什么
时间: 2024-04-18 14:27:35 浏览: 254
objc_msgSend_hook:objc_msgSend之精简且完整的hook核心功能,并且还有详细注释
在 Objective-C 中,当使用 Objc_msgSend 函数发送消息时,有时会在方法名后面带有 "$" 符号。这是因为在编译器生成的二进制文件中,方法名被编码为 C 语言标识符。而在编码过程中,为了避免与 C 语言标识符冲突,编译器会将 Objective-C 方法名进行一些特殊处理。
具体来说,编译器会使用 "$" 符号来表示 Objective-C 方法名中的冒号(:)参数分隔符。每个冒号都会被替换为 "$" 符号,以便在 C 语言标识符中使用。这样就可以确保方法名的唯一性,并与 C 语言的标识符规则相兼容。
举个例子,如果有一个 Objective-C 方法的原始名称是 "sendMessage:toUser:",在编译后的二进制文件中,它可能被表示为 "sendMessage$toUser$"。这样做是为了确保方法名的唯一性,并遵循 C 语言的标识符命名规则。
需要注意的是,这个 "$" 符号只存在于编译器生成的二进制文件中,而在源代码中是不需要使用的。在编写 Objective-C 代码时,仍然可以使用原始的方法名,而不需要加上 "$" 符号。编译器会自动处理这些名称,并生成正确的二进制表示形式。
阅读全文