【问题标题】:Access int from Another Objective-C Class从另一个 Objective-C 类访问 int
【发布时间】:2014-09-13 06:38:52
【问题描述】:

我试图从另一个类中获取一个 int,它只是说数字是 0(但不是)。

这是在 Class2.h 中:

@interface Class2 : SKScene <SKPhysicsContactDelegate>{
    Class1 * class;
}

这是在 Class2.m 中:

NSLog(@"%i", class.thisint);

这是在 Class1.h 中:

@property (assign, nonatomic) int thisint;

这是在 Class1.m 中(在 viewDidLoad 中):

thisint = 5;

在 viewDidLoad 方法之后调用了 NSLog,但它一直说 0。我如何从 Class1 获取这个 int?我不知道 Class2 是 SKScene 的事实是否会影响这一点......

【问题讨论】:

  • 尝试使用访问器来分配 thisint? self.thisint = 5;我还将删除 (assign, nonatomic) 的原语,只声明属性,如 @property int thisint;另外,你在哪里分配和初始化 Class2 中名为 'class' 的 ivar?到目前为止,您所拥有的只是一个指向名为 'class' 的 Class1 的 nil 指针

标签: ios objective-c iphone xcode int


【解决方案1】:

class 是 NSObject 上的现有方法,我希望您刚刚使用该名称来解决这个问题 - 如果没有,请更改变量的名称,它只会导致混淆。

如果你登录class会看到什么:

NSLog(@"%@",class);

(把它放在你现有日志的旁边)

您如何以及在何处分配给class 变量?

0 值可能意味着以下两种情况之一:

  • classnil。这意味着您尚未将其分配到任何地方。不会因为你声明了一个属性而神奇地获得了一个值
  • class 与您认为的不同。这是一个常见的初学者错误,你做了类似的事情

    class = [[Class2 alloc] init];
    

这会创建一个 new 实例。您需要获取对现有实例的引用,如果不查看更多代码,我无法告诉您如何操作。

【讨论】:

  • 是的,我只使用了类作为示例。原来是游戏。当我做 NSLog(@"%@",class);它说(空)。这是我在 Class2 中(在 .h 中)中拥有的唯一 Class1 代码: Class1 * class;我没有创建一个新实例,因为我知道它不起作用,而且我基本上需要知道如何引用它。
  • 好吧,如果您使用的是 IB,则您要么需要一个出口,要么在您创建需要传递它的东西的任何地方。就像我说的,没有更多细节很难说。
猜你喜欢
  • 2013-07-04
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 2011-07-26
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多