5

可能重复:
解决 Objective-C 命名空间冲突的最佳方法是什么?

在我的应用程序中,我使用了 SBJSON 框架(Stig Brautaset's)与我的 json api 进行交互,一切都运行良好。

但现在我可以通过 facebook SDK 使用 Facebook SSO。所以我按照Facebook 开发者网站中的说明将 facebook sdk 包含到我的项目中。

但问题是,facebook sdk 也使用了一些 SBJSON 类,如 SBJsonParser、SBJsonWriter 等,这些类已经存在于我使用的 SBJSON 框架中。这些类名称相似,但方法和属性不同。所以我既不能删除,也不能编辑它们中的任何一个。(我是初学者,我不知道如何在不丢失任何东西的情况下编辑它们)。

因此,由于重复的类,它显示了许多错误。

我能在这里做什么?请帮我 :)

下面给出了两个 JSonParser 类的头文件 (.h)。(.m 文件不能在这里给出,因为它们太长了。)

下面给出的 Facebook SDK 中使用的 JSonParser.h

#import <Foundation/Foundation.h>
#import "SBJsonBase.h"

@protocol SBJsonParser
- (id)objectWithString:(NSString *)repr;

@end

@interface SBJsonParser : SBJsonBase <SBJsonParser> {

@private
const char *c;

}   
@end


@interface SBJsonParser (Private)

- (id)fragmentWithString:(id)repr;

@end

下面给出的 SBJson 框架中使用的 JSonParser.h

#import <Foundation/Foundation.h>

@interface SBJsonParser : NSObject {


NSString *error;
NSUInteger depth, maxDepth;

}

@property NSUInteger maxDepth;

@property(copy) NSString *error;

- (id)objectWithData:(NSData*)data;

- (id)objectWithData:(NSData*)data;

- (id)objectWithString:(NSString*)jsonText error:(NSError**)error;


@end

谢谢 :)

4

2 回答 2

0

您需要决定保留哪个 SBJson 实现,然后从项目设置中手动删除另一个。

主要问题是有很多优秀的 iOS 开源可用。但是这个开源的分发方法充其量是晦涩难懂的。没有比在 USB 记忆棒上复制代码更先进或更简单的方法了。

我写了一篇关于iOD 开源状态的较长博客文章:以及如何处理它http ://blog.jayway.com/2011/05/16/the-state-of-ios-open -source-and-what-to-do-about-it/

我的建议是使用将 Xcode 项目作为其他 Xcode 项目的依赖项的能力。它效果很好,我已经使用这种方法超过 5 年了,效果很好。

于 2011-08-09T07:18:06.997 回答
0

尝试这个:

  • 通过删除对文件的引用来删除其中一个框架。
  • 选择每个重复的类,然后选择代表名称的单词(如JSonParser.h)。
  • 在 Xcode 中,使用“Refactor...”菜单项对其进行重命名。
  • 重新导入已删除的框架。

确保您之前制作了快照,以便在出现问题时可以恢复。

于 2011-08-09T07:26:47.757 回答