2013-05-31 22 views
0

好吧,我們很多新手codehack,我已經到了點,通過試驗和錯誤,我可以扔在一起相對有趣和合理穩定的遊戲,沒有真正理解爲什麼很多我的代碼的作品,我對指針和數據管理了解甚少。我嘗試過學習,但是由於我缺乏計算機科學的正式學術背景,並且有15年的編程經驗,所以介紹的內容太簡單了,高級內容使用了大量我不明白的代碼術語我做的。Cocos2d/directC指針繼承;添加兒童與更改數據

我想知道爲什麼有時我可以定義一個新變量,將它指向另一個變量,然後間接更改指向的數據,有時候我不能。這裏有一個例子如果它確實如我所料工作:

NSString *myString = [MySingleton sharedMySingleton].singletonString; 
myString = @"Hello there!"; 
[myString retain]; 

通過改變本地定義和「myString」我可能會導致更改單串。

下面是一個例子,其中它不工作,我想到:

HUDLayer *windowBox = shopWindowBox; 
[windowBox addChild: shop]; 
[windowBox retain]; 

在這種情況下,HUDLayer只是一個基本空白的文件,「店」是包含我的店的菜單,和「shopWindowBox 「是HUDLayer的一個實例。如果我用[shopWindowBox addChild:shop]調用代碼,它可以工作,但只要我嘗試定義一個新的HUDLayer並指向它,它就不起作用。

我知道我正在做一個非常根本不同的操作,在一種情況下,我正在更改字符串的內容,而在另一種情況下,我正在添加一個孩子。我得出的結論是「你不能把孩子添加到一個尖銳的數據」,但我真的很正確地理解這一點,如果是的話,爲什麼不呢?

回答

0

我在一個不同的塊中發現了一個代碼錯誤,將其可見性設置爲FALSE。

我試圖通過將「shopWindowBox」,「unitWindowBox」和「unlockablesWindowBox」全部更改爲使用windowBox的本地定義變量來使代碼更加即插即用,但是我的「hideUnitWindowBox」和「hideUnlockablesWindowBox」函數填充後,我的商店櫥窗的可見性設置爲FALSE。

我猜指針不僅按我的預期工作,它們的工作比我預期的要好......我用指針愚蠢地將4個不同的窗口合併到一個窗口中。