2014-09-13 85 views
0

我试图从另一个类获取一个int,它只是说这个数字是0(但它不是)。从另一个Objective-C类访问int

这是Class2.h:

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

这是Class2.m:

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

这是Class1.h:

@property (assign, nonatomic) int thisint; 

这是在1类.m(in viewDidLoad):

thisint = 5; 

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

+0

尝试使用访问器来分配此? self.thisint = 5;我也会删除(assign,nonatomic)原语,并声明像@property int thisint这样的属性;另外,您在哪里分配并启动Class2中名为'class'的ivar?你到目前为止所有的指针都是一个名为'class'的Class1的无指针 – Bamsworld 2014-09-13 06:50:50

回答

1

class是一个NSObject的现有方法,我希望你只是用这个名称的目的这个问题 - 如果没有,请更改变量的名称,这只会导致混淆。

你看到了什么,如果你登录class

NSLog(@"%@",class); 

(把旁边在您现有的日志)

如何和你在哪里分配给class变量?

0值可能意味着两件事情之一:

  • classnil。这意味着你没有将它分配到任何地方。你不会因为你已经声明一个神奇地获得一个物业的价值
  • class是你认为它的一个不同的实例。这是一个常见的错误初学者,你已经做了一些类似

    class = [[Class2 alloc] init]; 
    

这将创建一个新例如。您需要获取对现有实例的引用,如果没有看到更多代码,我无法告诉您该如何实施。

+0

是的,我只是用class来举例。原来是游戏。当我做NSLog(@“%@”,class);它说(空)。这是我在Class2(在.h中)中唯一的Class1代码:Class1 * class; 我没有做一个新的实例,因为我知道它不会工作,我基本上需要知道,以引用它。 – Kyle 2014-09-13 17:50:45

+0

那么你要么需要一个插座,如果你使用IB,或者你需要将它传递给任何地方。就像我说的,没有更多的细节很难说清楚。 – jrturton 2014-09-13 18:32:25