Программирование на iOS - повторяющийся символ _OBJC_IVAR

класс оператора:

#import <Foundation/Foundation.h>


@interface operator : NSObject {

int number;
}

@property int number;

@end

@implementation operator

- (id)init{
    self = [super init];
    if (self) {
    [self setNumber:0];
    }
    return self;
}

@synthesize number;
@end

main.m:

#import <UIKit/UIKit.h>
#import "operator.m"

int main(int argc, char *argv[]) {

id operator1 = [[operator alloc] init];
id operator2 = [[operator alloc] init];

[operator1 setNumber:10];
[operator2 setNumber:20];

int answer = [operator1 number] + [operator2 number];

printf("The answer is %d",answer);



NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}

Я получаю ошибку -> ld: дубликат символа _OBJC_IVAR _ $ _ operator.number в / Volumes / Home / Desktop / testing / build / testing .build / Debug-iphonesimulator / testing.build / Objects-normal / i386 / operator.o и /Volumes/Home/Desktop/testing/build/testing.build/Debug-iphonesimulator/testing.build/Objects-normal/i386/ main.o

Я впервые программирую в ObjC. Я что-то не так делаю?

Я попытался исправить ошибку «Очистить все цели», которую я нашел в Google, но не помог.

21
задан Sport 24 June 2015 в 06:32
поделиться

1 ответ

  1. Никогда не #import файл .m в другой файл. Вы импортируете файл .h , если он нужен.
  2. У вас не должно быть кода, выполняющегося в main , до создания пула автозапуска. Рано или поздно это вызовет проблемы. В этом случае тестовый код, вероятно, следует поместить в приложение : didFininshLaunching .
93
ответ дан 29 November 2019 в 06:09
поделиться