我无法从另一个类访问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值。
对我使用语言的任何智慧和更正都非常感激。
答案 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;
}