导入标题两次:对于体系结构x86_64

时间:2015-09-04 13:44:10

标签: ios objective-c xcode

  

重复符号_webViewManager:       应用程序/生成/中间体/ app-name.build /调试-iphonesimulator / app-name.build /对象 - 正常/ x86_64的/ PostsShowViewController.o       应用程序/生成/中间体/ app-name.build /调试-iphonesimulator / app-name.build /对象 - 正常/ x86_64的/ FirstViewController.o   ld:1个用于体系结构x86_64 clang的重复符号:错误:链接器   命令失败,退出代码为1(使用-v查看调用)

我在尝试编译时遇到上述错误。 当我尝试在两个不同的视图控制器中导入名为WebViewManager.h的文件时会发生这种情况。

WebViewManager.h

#import <UIKit/UIKit.h>

@interface WebViewManager : NSObject

@property (strong, nonatomic) UIWebView *webView;

+ (id)getUniqueWebViewManager: (UIViewController *)container;
- (void)loadUrlWithString: (NSString *)urlString;
- (void) removeWebViewFromContainer;

@end

FirstViewController.m

#import "FirstViewController.h"
#import "PostsShowViewController.h"
#import "Constants.h"
#import "AppDelegate.h"
#import "WebViewManager.h"

PostsShowController.m

#import "PostsShowViewController.h"
#import "FirstViewController.h"
#import "AppDelegate.h"
#import "WebViewManager.h"

同样,如果我在多个地方尝试#import "Constants.h",也会出现同样的错误。

编辑:

Constants.h

NSString *BASE_URL = @"google.com";

EDIT2:

出现WebViewManager:

FirstViewController.m

@implementation FirstViewController

WebViewManager *webViewManager;

1 个答案:

答案 0 :(得分:2)

您忘记在头文件中使用extern,因此包含Constants.h的每个实现文件都声明了自己的BASE_URL实例。

你想:

extern NSString *BASE_URL

,这在Constants.m

NSString *BASE_URL = @"google.com";

或者,你也可以在Constants.h

中使用它
#define BASE_URL @"google.com"

忘了Constants.m

但是我没有足够的信息来告诉你链接器为什么抱怨webViewManager

好的,第2部分:

问题在于,有多个全局符号称为webViewManager,因为您错误地声明了它们。使用:

@interface FirstViewController : UIViewController {
    WebViewManager *_webViewManager;
}

(和其他类一样)。这使得它们成为实例变量,而不是全局变量。