0

我无法从另一个类访问 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 值。

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

4

2 回答 2

0

首先,当输出 int 时,总是在你的 NSLog 中使用%d而不是。%@

其次,如果你期望输出 10,你应该首先在你的HelloWorldLayer.m:

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

   NSLog(@"ClassOne int = %@",_agePointer);
   }
   return self;
}
于 2013-08-25T06:17:58.443 回答
0

好的试试这个:

-(id)init
 { 
    if((self=[super init])){ 
       _agePointer = [[ClassOne alloc] init]; 
        NSLog(@"ClassOne int = %d",_agePointer.ageClass); 
     } 
  return self; 
 } 
于 2013-08-27T12:56:09.230 回答