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

그 소리 : 오류 : 링커 명령 (호출을보기 위해 사용 -v) 종료 코드 1로 실패

가 어떻게이 문제를 해결합니까 여기에 대한 상세한 설명인가? 미리 감사드립니다!

UPDATE : 여기 timeTick가 사용되는 3 개 개의 파일입니다 :

.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

관련 문제