2013-08-25 64 views
0

我无法从另一个类访问int属性。我知道这个问题已经被问了好几次了,但是在之前的问题中没有任何解决方案似乎可行。我在xcode方面的知识是基本的,我正在使用这个项目来发展我的技能。从另一个类访问int值

我有两个类:HelloWorldLayer和ClassOne。 ClassOne指出int的值。两者都是Cocos2d CCLayer类(可能不是实践类间价值访问的最佳类)。

ClassOne.h

@interface ClassOne : CCLayer { 
    int ageClass; 
} 
@property (nonatomic, readwrite)int ageClass; 

@end 

ClassOne.m

@implementation ClassOne 
@synthesize ageClass = _ageClass; 

-(id)init{ 
    if((self=[super init])){ 
    _ageClass = 10; 

    } 
return self; 
} 

@end 

HelloWorldLayer.h

#import "ClassOne.h" 

@interface HelloWorldLayer : CCLayer <...> { 
    ClassOne *agePointer; 
} 
@property (nonatomic,assign)ClassOne *agePointer; 
+(CCScene*)scene; 

@end 

HelloWorldLayer.m

#import "HelloWorldLayer.h" 
#import "AppDelegate.h" 
#import "ClassOne.h" 

@implementation HelloWorldLayer 
@synthesize agePointer = _agePointer; 
+(CCScene*)scene... 

-(id)init{ 
    if((self=[super init])){ 
    _agePointer.ageClass = self; 

    NSLog(@"ClassOne int = %@",_agePointer); 

    } 
return self; 
} 

... 
@end 

输出结果:

"ClassOne int = (null)" 

or "0" if i use "%d" token and "int = x", where the line "int x =_agePointer.ageClass;" 
is used. 

我后的结果是对HelloWorldLayer NSLog的显示 “10”,在ClassOne定义的int值。

我非常感谢我对语言使用的任何智慧和修正。

+0

请问这个线的装置“_agePointer.ageClass = self;” ageClass是一个整数,您尝试在其中分配一个对象。我认为它会工作如下: - (id)init if((self = [super init])){{}} {{ClassOne alloc] init]; NSLog(@“ClassOne int =%d”,_ agePointer.ageClass); } return self; } –

+0

我正在使用这个问题作为指导[链接](http://stackoverflow.com/questions/9371125/accessing-a-value-of-a-classs-variable-from-another-objective-c)。我的印象是,该行将“ageClass”的值赋给“_agePointer”。 –

+1

解决了它。谢谢Prateek,如果你把它作为答案发布,我会接受它。 –

回答

0

好试试这个:

-(id)init 
{ 
    if((self=[super init])){ 
     _agePointer = [[ClassOne alloc] init]; 
     NSLog(@"ClassOne int = %d",_agePointer.ageClass); 
    } 
    return self; 
} 
0

首先,当输出int时,在您的NSLog中始终使用%d而不是%@

所有第二,如果你期望输出10,你应该已经先实例化的类在HelloWorldLayer.m

-(id)init{ 
    if (self = [super init]) { 
    _agePointer = [[ClassOne alloc] init]; 

    NSLog(@"ClassOne int = %@",_agePointer); 
    } 
    return self; 
} 
+0

谢谢恩里科,启动这个班是绝对需要的。 –