0

我正在尝试将 FBConnect 添加到包含 SBJson 框架的应用程序中。但是,当我尝试编译项目时,出现以下两个错误:

Duplicate interface definition for class 'SBJsonWriter'
Duplicate interface definition for class 'SBJsonParser'

我能做些什么来解决这个错误?谢谢你的帮助。

4

2 回答 2

4

删除

#import FacebookSDK/FacebookSDK.h

在你的项目中

我开始使用 FacebookSDK,但后来我对它的当前状态感到失望并尝试使用旧的“FBConnect”,这就是我得到错误的原因

于 2012-11-15T14:40:56.087 回答
2

有两种可能:

你有两个同名的接口。使用 Xcode 的 find in project 菜单选项来查找 SBJsonWriter 的实例。然后以某种方式重命名其中一个接口,您已经设法两次导入 .h 文件。检查以确保您始终使用#import 而不是#include。

关于#import/#include 的更多信息:

include 在#include 语句的位置盲目地包含文件。这意味着如果您在 .m 中 #include 一个文件两次,您将获得该文件的两个副本。几乎所有传统的 C #include 文件都有类似以下内容的内容:

// some_file.h
#if !defined SOME_FILE_H
#define SOME_FILE_H

//  entire content of #include file

#endif

上面的他有时被称为包含保护宏。

在 Objective-C 中,如果你 #import 一个文件,编译器会执行检查以确保它尚未被导入。因此,防护装置通常被省略。因此,如果您#include 一个应该是#imported 的文件,则不会进行任何检查,并且您有时会得到重复的定义。

于 2012-08-01T01:55:12.830 回答