класс оператора:
#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, но не помог.
#import
файл .m
в другой файл. Вы импортируете файл .h
, если он нужен. main
, до создания пула автозапуска. Рано или поздно это вызовет проблемы. В этом случае тестовый код, вероятно, следует поместить в приложение : didFininshLaunching
.