iOS编程 - 重复符号_OBJC_IVAR

Ale*_*and 21 iphone objective-c ios4

算子类:

#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
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误 - > ld: duplicate symbol _OBJC_IVAR_$_operator.number in /Volumes/Home/Desktop/testing/build/testing.build/Debug-iphonesimulator/testing.build/Objects-normal/i386/operator.o and /Volumes/Home/Desktop/testing/build/testing.build/Debug-iphonesimulator/testing.build/Objects-normal/i386/main.o

这是我第一次在ObjC编程.难道我做错了什么?

我尝试了在谷歌上找到的"清理所有目标"修复但没有帮助.

Jak*_*org 93

  1. 你永远不应该#import一个.m文件到另一个文件..h如果需要,您可以导入该文件.
  2. main创建自动释放池之前,不应该执行代码.这迟早会引起问题.在这种情况下,您可能应该进入测试代码application:didFininshLaunching.

  • 你救了我,我错过了,并添加了.m,并想知道为什么它不起作用:) (4认同)