Raga qualcuno potrebbe spiegarmi perchè mi appare questo errore?
In pratica è solo un programma di prova..Abbiamo 2 classi: ClasseA e ClasseB.
ClasseB eredita da A i metodi ma ne sovrascrive uno. Di seguito il codice:
main:
codice:
#import <Foundation/Foundation.h>
#import "ClasseA.h"
#import "ClasseB.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
ClasseA *istanzaClasseA = [ClasseA new];
ClasseB *istanzaClasseB = [[ClasseB alloc]init];
[istanzaClasseA initVar];
[istanzaClasseA somma];
[istanzaClasseB initVar];
[istanzaClasseB somma];
}
return 0;
}
ClasseA.h e .m ( su due file separati):
codice:
@interface ClasseA : NSObject
-(void)initVar;
-(void)somma;
@end
#import "ClasseA.h"
@implementation ClasseA
{
@protected
int iVar;
int iVar2;
}
-(void)initVar
{
iVar = 30;
iVar2 = 70;
}
-(void)somma
{
iVar += iVar2;
NSLog(@"Il valore di iVar corrente è %i", iVar);
}
@end
Classe B .h e .m (anch'esso su file separati):
codice:
#import "ClasseA.h"
@interface ClasseB : ClasseA
-(void)initVar;
-(void)somma;
@end
#import "ClasseA.m"
#import "ClasseB.h"
@implementation ClasseB
-(void)initVar
{
iVar = 20;
iVar = 30;
}
-(void)somma
{
iVar += iVar2;
NSLog(@"Il valore di iVar corrente ora è %i", iVar);
}
@end
L'editor non mi da ALCUN problema è in fase di compilazione che il linker mi da questo errore:
SovrascritturaMetodo.build/Debug/SovrascritturaMetodo.build/Objects-normal/x86_64/ClasseB.o
ld: 4 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Vi prego aiutatemi a capire perchè ho notato che se metto TUTTO il codice su una SOLA pagina, va alla grande....why??