2014-09-13 89 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