2013-10-28 184 views
1

试图编译和运行我的项目时,我遇到了上述错误。这里是一个更详细的研究:链接器命令失败,退出代码1错误

duplicate symbol _timeTick in: 
/Users/zstephen/Library/Developer/Xcode/DerivedData/MyStore_2-ejjgywkgxdulkogcohzbzojgqpzp/Build/Intermediates/MyStore 2.build/Debug-iphonesimulator/MyStore.build/Objects-normal/i386/TimeController.o 
/Users/zstephen/Library/Developer/Xcode/DerivedData/MyStore_2-ejjgywkgxdulkogcohzbzojgqpzp/Build/Intermediates/MyStore 2.build/Debug-iphonesimulator/MyStore.build/Objects-normal/i386/DeviceDetailViewController.o 
ld: 1 duplicate symbol for architecture i386 

铛:错误:连接命令,退出代码1失败(使用-v看到调用)

我该如何解决这个问题?提前致谢!

更新:这里是3个文件是用来TIMETICK:

.H:

#import <UIKit/UIKit.h> 

int timeTick = 0; 

@interface TimeController : UIViewController{ 
IBOutlet UILabel *labelTime; 
} 
- (IBAction)startTimer:(id)sender; 


@end 

.M:

@implementation TimeController 


NSTimer *timer; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    labelTime.text = @"0"; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

    - (IBAction)startTimer:(id)sender { 
    [timer invalidate]; 
    timer= [NSTimer scheduledTimerWithTimeInterval:60.0 target:(self) selector:    (@selector(tick)) userInfo:(nil) repeats:(YES)]; 
} 

-(void)tick{ 
    timeTick++; 
    NSString *timeString = [[NSString alloc] initWithFormat:@"%d", timeTick]; 
    labelTime.text = timeString; 



} 


@end 

最后,是保存和载入一个单独的文件timeTick进入核心数据。

.M:

NSNumber *timetickNumber = [NSNumber numberWithInt:timeTick]; 
[newDevice setValue:timetickNumber forKey:@"name"]; 
+0

错误表示您在两种方法中都将相同的符号_timeTick声明为全局符号。不要这样做。在easm文件中显示_timeTick的声明代码。 – zaph

+0

@Zaph我删除了所有对_timeTick的引用。错误仍然发生。我正在使用一个名为timeTick的int。这是否影响? – PanicDev

+0

可能。发布timeTick的代码,我们可以给你更多的信息。 – user1118321

回答

1

发生了什么事是,每一个文件#import S中.h文件现在有它自己的变量命名timeTick。你需要做的是在标题中将其设置为外部,然后在.m文件中对其进行定义。所以你.h应该是这样的:

extern int timeTick; 

然后你.m应在该文件的顶部有这样的:

int timeTick = 0; 

然后需要它会#import ".h",看到了访问权限的任何文件定义。由于它是外部的,因此它们不会创建它们自己的timeTick,而是会在链接时查找它们,他们将在.m文件中找到它们。

+0

非常感谢!你真棒! – PanicDev

相关问题