从另一个类访问int值

时间:2013-08-25 06:12:33

标签: objective-c class properties

我无法从另一个类访问int属性。我知道这个问题已被问过很多次,但是之前问题中发布的解决方案似乎都没有用。我在xcode方面的知识是基本的,我正在使用这个项目来发展我的技能。

我拥有的两个类是: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值。

对我使用语言的任何智慧和更正都非常感激。

2 个答案:

答案 0 :(得分:0)

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

其次,如果您希望输出10,则应首先在HelloWorldLayer.m中实例化该课程:

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

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

答案 1 :(得分:0)

好试试这个:

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