gpt4 book ai didi

ios - 从另一个访问一个类的变量的值 - objective-c

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:17:03 24 4
gpt4 key购买 nike

这可能是一个愚蠢的问题,但我很难尝试解决它。问题是有一个实现计数器的类,并且在它的过程结束时它调用由另一个类控制的 View 。我想做的是从第二类访问第一类计数器的值。我将计数器定义为一个属性并尝试从其他类访问它,但我总是得到它的值 0。有人可以帮我吗?

谢谢。

我的是这样的:

Class1.h

@interface Class1 : CCLayerColor <UIAlertViewDelegate>
{
int movesCounter;
}
@property int movesCounter;

@end

Class1.m

@implementation Class1
@synthesize movesCounter;

//At this point the counter gets incremented and NSLogging its value correctly

@end

Class2.m

#import Class1.h    

@implementation GameOverLayer


-(id) init
{
if( (self=[super init]))
{
Class1 *theClass1 = [[Class1 alloc]init];
NSString *message = [NSString stringWithFormat:@"It took you %d moves.",theClass1.movesCounter];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Alert" message:message delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];

[alert show];
[alert release];
}
}

我做错了什么?

最佳答案

您的问题是您在 Class2 初始化方法中创建了 Class1 的实例:

Class1 *theClass1 = [[Class1 alloc] init];

这个新实例是对你已经成功递增的 int 实例的补充,因为它是一片新的内存,它的 movesCounter 值仍然是 0。你真正想要的是指向特定副本的指针您一直在使用的 Class1 的 - 不需要或不需要 alloc/init 。尝试在 Class2 中创建一个可以保存指向 Class1 的指针的属性:

#import "Class1.h"

@interface Class2 : NSObject {
Class1 *myPointerToClass1;
}
@property (nonatomic, retain) Class1 *myPointerToClass1;

当然还有 Class2 的 .m 中的 @synthesize myPointerToClass1。现在 Class2 已准备好保存指向 Class1 的指针,您只需简单地填充它即可。在Class1中,在alloc和init是Class2实例的代码之后,使用这样的代码:

myClass2.myPointerToClass1 = self;

为了确保我没有忘记任何事情,我使用您上面的代码完成了所有这些工作,并且一切正常。


编辑:原始答案从这里开始,但现在无关紧要......您提到已将计数器定义为属性,但您是否还在实现 (.m) 文件中合成了实例变量?

@synthesize myCounter;

这将为您自动创建 setter 和 getter 方法。此外,您是否已验证该值是否正在递增,也许是在 View Controller 中使用 NSLog 语句?

NSLog(@"myCounter is currently equal to %d", myCounter); // assuming an int

如果涵盖了这些基础知识,也许您可​​以编辑您的问题以包含向我们展示更多有关行为不当的类首先如何获取指向变量的指针的代码。

关于ios - 从另一个访问一个类的变量的值 - objective-c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9371125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com