📌  相关文章
📜  重复符号 '_OBJC_CLASS_$_FCM' 在: (1)

📅  最后修改于: 2023-12-03 14:58:11.214000             🧑  作者: Mango

重复符号 'OBJC_CLASS$_FCM' 在:

在iOS开发中,经常会遇到“重复符号”的错误,这种错误通常是由于代码中出现了重复定义的符号所引起的。其中,符号有可能是函数、变量、类或者类中的成员变量等。

这里以“重复符号 'OBJC_CLASS$_FCM' 在:”为例来说明这种错误的解决方法。

错误原因

在iOS开发中,当我们使用Objective-C来定义一个类时,系统会自动为这个类生成一个或多个符号(symbol)。其中,符号的名称是以“OBJC_CLASS$_类名”这种格式命名的。

在编译过程中,编译器会将所有用到的符号都存储在一个符号表中。如果出现了重复的符号,就会导致编译错误。

在上面的错误提示中,“OBJC_CLASS$_FCM”表示的是类名为FCM的符号重复定义了,导致编译失败。

解决方法

出现“重复符号”的错误时,我们可以按照以下步骤来解决:

  1. 找到所有包含重复符号的源文件和库文件。可以使用下面的命令来查找:

    find . -name '*.h' -o -name '*.m' -o -name '*.a'
    

    这个命令会在当前目录及所有子目录中查找所有后缀名为.h、.m和.a的文件。可以根据实际情况修改命令中的参数。

  2. 找到所有包含重复符号的文件中的重复定义。可以使用下面的命令来查找:

    grep -r '_OBJC_CLASS_\$_FCM' .
    

    这个命令会在当前目录及所有子目录中查找所有包含“OBJC_CLASS$_FCM”字符串的文件。可以根据实际情况修改命令中的参数。

  3. 对于每个出现重复定义的文件,找到其中的冲突部分并将其删除或注释掉。确保每个符号只被定义了一次。

  4. 如果你的项目中使用了第三方库,而这个库中也包含了与你的代码中相同的符号,那么你需要修改你的代码或者库文件来解决这个问题。具体方法可以参考下面的链接。

参考链接