• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 11:43:57 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

这可能是一个愚蠢的问题,但我很难尝试解决它。问题是一个类实现了一个计数器,并在它的最后调用一个由另一个类控制的 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];
    }
}

我做错了什么?



Best Answer-推荐答案


您的问题是您在 Class2 的 init 方法中创建了 Class1 的 new 实例:

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

这个新实例是除了你已经成功递增的 int 的实例之外,因为它是一个新的内存片,它的 moveCounter 值仍然是 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap