可能重复:
What is the best way to solve an Objective-C namespace collision?
在我的应用程序中,我使用了sbjson框架(stig brautaset)与我的json api交互,一切都很好。
但现在我正处于使用脸谱网SDK使用脸谱网SSO的情况。所以我把脸谱网SDK包含在我的项目中,如Facebook developer site.所指示的
但问题是,脸谱网SDK也使用了一些SBJSON类,如SBJsonParser、SBJsonWriter等,它们已经存在于我使用的SBJSON框架中。这些类在名称上相似,但在方法和属性上不同。所以我既不能删除,也不能编辑。(我是一个初学者,我不知道如何编辑它们而不丢失任何东西)。
因此,由于类重复,它显示了许多错误。
我在这里能做什么?请帮帮我:)
下面给出了两个jsonparser类的头文件(.h)。(.m文件太长,无法在此提供。)
jsonparser.h,在下面给出的facebook sdk中使用
#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
谢谢:)
最佳答案
您需要决定保存哪个SBJSON实现,然后手动从项目设置中删除另一个SBJSON实现。
主要的问题是有大量优秀的ios开源可用。但这种开源软件的发布方法充其量也很神秘。没有比在U盘上复制代码更先进或更愚蠢的了。
我写了一篇较长的博客文章,主题是iod开源的现状:以及如何应对:http://blog.jayway.com/2011/05/16/the-state-of-ios-open-source-and-what-to-do-about-it/
我的建议是使用Xcode项目作为其他Xcode项目的依赖项的能力。这个方法很好,我用了5年多,效果很好。