Objective c 分子变量为零?
我是Objective-c的新手,我有点问题。我的代码似乎是正确的,因为xcode说我没有问题,但在构建它时,它说我在分子中的所有变量都是零。我似乎不明白。让我知道,如果张贴我的元素类是必要的,谢谢。我愿意接受任何纠正性的批评,并愿意学习 这是主菜单Objective c 分子变量为零?,objective-c,Objective C,我是Objective-c的新手,我有点问题。我的代码似乎是正确的,因为xcode说我没有问题,但在构建它时,它说我在分子中的所有变量都是零。我似乎不明白。让我知道,如果张贴我的元素类是必要的,谢谢。我愿意接受任何纠正性的批评,并愿意学习 这是主菜单 @autoreleasepool { // insert code here... Element *myElement1 = [[Element alloc] initWithName:@"Hydrogen" andSymbol
@autoreleasepool {
// insert code here...
Element *myElement1 = [[Element alloc] initWithName:@"Hydrogen" andSymbol:@"H" andAtomicNumber:1 andAtomicWeight:1.00794];
NSLog(@"The element %@ has atomic number %li.", [myElement1 name], (long)[myElement1 atomicNumber]);
NSLog(@"The element is %@.", [myElement1 description]);
Element *myElement2 = [[Element alloc] initWithName:@"Hydrogen" andSymbol:@"H" andAtomicNumber:1 andAtomicWeight:1.00794];
NSLog(@"The element is %@.", [myElement2 description]);
NSLog(@"The element %@ has atomic number %li.", [myElement2 name], (long)[myElement2 atomicNumber]);
Element *myElement3 = [[Element alloc] initWithName:@"Oxygen" andSymbol:@"O" andAtomicNumber:8 andAtomicWeight:15.9994];
NSLog(@"The element is %@.", [myElement3 description]);
NSLog(@"The element %@ has atomic number %li.", [myElement3 name], (long)[myElement3 atomicNumber]);
Molecule *myMolecule = [[Molecule alloc] initWithName:@"Water" andSymbol:@"H2O" andElement1:myElement1 andElement2:myElement2 andElement3:myElement3 andWeight:33.00674];
NSLog(@"The molecule is %@.", [myMolecule description]);
NSLog(@"The molecule %@ has symbol %@ and atomic number %li.", [myMolecule name], [myMolecule symbol],(long)[myMolecule weight]);
}
return 0;
}
这是分子。h
@interface Molecule : NSObject{
NSString *name;
NSString *symbol;
Element *element1;
Element *element2;
Element *element3;
float weight;
}
-(id)init;
-(id)initWithName:(NSString *)newName;
-(id)initWithName:(NSString *)newName andSymbol:(NSString *)newSymbol;
-(id)initWithName:(NSString *)newName andSymbol:(NSString *)newSymbol andElement1:(Element *)newElement1;
-(id)initWithName:(NSString *)newName andSymbol:(NSString *)newSymbol andElement1:(Element *)newElement1 andElement2:(Element *)newElement2;
-(id)initWithName:(NSString *)newName andSymbol:(NSString *)newSymbol andElement1:(Element *)newElement1 andElement2:(Element *)newElement2 andElement3:(Element *)newElement3;
-(id)initWithName:(NSString *)newName andSymbol:(NSString *)newSymbol andElement1:(Element *)newElement1 andElement2:(Element *)newElement2 andElement3:(Element *)newElement3 andWeight: (float)newWeight;
-(void)setName:(NSString *)newName;
-(NSString *)name;
-(void)setSymbol:(NSString *)newSymbol;
-(NSString *)symbol;
-(void) setElement1:(Element *)newElement;
-(Element *)element1;
-(void) setElement2:(Element *)newElement;
-(Element *)element2;
-(void) setElement3:(Element *)newElement;
-(Element *)element3;
-(void)setWeight:(float) newWeight;
-(float)weight;
-(NSString *)description;
@end
这是molecular.m
@implementation Molecule
-(id)init
{
return [self initWithName:@"No Name"];
}
-(id)initWithName:(NSString *)newName
{
return [self initWithName:newName andSymbol:@"?"];
}
-(id)initWithName:(NSString *)newName andSymbol:(NSString *)newSymbol
{
return [self initWithName:newName andSymbol:newSymbol andElement1:element1];
}
-(id)initWithName:(NSString *)newName andSymbol:(NSString *)newSymbol andElement1:(Element *) newElement1
{
return [self initWithName:newName andSymbol:newSymbol andElement1:element1 andElement2:element2];
}
-(id)initWithName:(NSString *)newName andSymbol:(NSString *)newSymbol andElement1:(Element *) newElement1 andElement2:(Element *) newElement2
{
return [self initWithName:newName andSymbol:newSymbol andElement1:element1 andElement2:element2 andElement3:element3];
}
-(id)initWithName:(NSString *)newName andSymbol:(NSString *)newSymbol andElement1:(Element *) newElement1 andElement2:(Element *) newElement2 andElement3:(Element *)newElement3
{
return [self initWithName:newName andSymbol:newSymbol andElement1:element1 andElement2:element2 andElement3:element3 andWeight:0.0];
}
// Designated Initializer
-(id)initWithName:(NSString *)newName andSymbol:(NSString *)newSymbol andElement1:(Element *)newElement1 andElement2:(Element *)newElement2 andElement3:(Element *)newElement3 andWeight:(float)newWeight
{
self = [super init];
if (self) {
[self setName:newName];
[self setSymbol:newSymbol];
[self setElement1:element1];
[self setElement2:element2];
[self setElement3:element3];
[self setWeight:newWeight];
}
return self;
}
-(void)setName:(NSString *)newName
{
name = newName;
}
-(NSString *)name
{
return name;
}
-(void)setSymbol:(NSString *)newSymbol
{
symbol = newSymbol;
}
-(NSString *)symbol
{
return symbol;
}
-(void)setElement1:(Element *)newElement1
{
element1 = newElement1;
}
-(Element *)element1
{
return element1;
}
-(void)setElement2:(Element *)newElement2
{
element2 = newElement2;
}
-(Element *)element2
{
return element2;
}
-(void)setElement3:(Element *)newElement3
{
element3 = newElement3;
}
-(Element *)element3
{
return element3;
}
-(void)setWeight:(float)newWeight
{
weight = [element1 atomicWeight]+ [element2 atomicWeight]+ [element3 atomicWeight];
}
-(float)weight
{
return weight;
}
-(NSString *)description
{
return [NSString stringWithFormat:@"\nName : %@\nSymbol: %@\nElement1 :%@\nElement2 :%@\nElement3 : %@\nWeight : %f\n", name, symbol, element1, element2, element3, weight];
}
@end
我的输出是:
2014-01-28 12:33:53.166 MyFirstApp[14239:303] The element Hydrogen has atomic number 1.
2014-01-28 12:33:53.168 MyFirstApp[14239:303] The element is
Name : Hydrogen
Symbol: H
Atomic Number : 1
Atomic Weight : 1.007940
.
2014-01-28 12:33:53.168 MyFirstApp[14239:303] The element is
Name : Hydrogen
Symbol: H
Atomic Number : 1
Atomic Weight : 1.007940
.
2014-01-28 12:33:53.168 MyFirstApp[14239:303] The element Hydrogen has atomic number 1.
2014-01-28 12:33:53.169 MyFirstApp[14239:303] The element is
Name : Oxygen
Symbol: O
Atomic Number : 8
Atomic Weight : 15.999400
.
2014-01-28 12:33:53.169 MyFirstApp[14239:303] The element Oxygen has atomic number 8.
(lldb)
这就是变量视图中的内容
myElement2 Element * 0x10010d610 0x000000010010d610
myElement3 Element * 0x100300340 0x0000000100300340
myElement1 Element * 0x100102e90 0x0000000100102e90
myMolecule Molecule * nil 0x0000000000000000
NSObject NSObject
name NSString * nil
symbol NSString * nil
element1 Element * nil
element2 Element * nil
element3 Element * nil
weight float
关于这个问题你能说得更具体些吗?你得到了什么结果?你期望得到什么结果?是否启用了ARC?我不想听起来很无知,但什么是ARC?我所期望的是一个输出,告诉我分子名称,符号,元素1-3和重量。相反,我没有从我的分子类中得到任何东西,但是我的元素类工作得很好。如果我需要进一步详细说明,请告诉我,谢谢。ARC:您可以编辑您的问题以包含控制台日志的实际输出吗?此外,头文件声明
description
以返回分子
,但您的实现返回NSString
。如何检查它是否已启用?我以为xcode 5会自动打开这个?