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

clang: エラー: リンカー コマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用してください)

この問題を解決するにはどうすればよいですか? 前もって感謝します!

更新: 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 を Core Data に保存してロードする別のファイルがあります。

.m:

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

1 に答える 1

1

何が起こっているかというと、ファイルであるすべて#importのファイルには、.hという名前の独自の変数がありますtimeTick。あなたがする必要があるのは、それをヘッダーで外部にしてから、.mファイルで定義することです。したがって、次.hのようになります。

extern int timeTick;

次に、.mこれをファイルの先頭に置く必要があります。

int timeTick = 0;

次に、それにアクセスする必要があるファイルはすべて#import ".h"、定義を参照します。これは外部にあるため、独自に作成することはありませんtimeTickが、リンク時に検索し、ファイル内で見つけることができ.mます。

于 2013-10-28T04:37:08.823 に答える