2013-10-28 59 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

相關問題