這裏是我的代碼:Objective-C:你如何聲明和保留int?
@interface Game : Layer // this is from cocos2d
{
int maxSprites;
}
@implementation Game
-(void)initVariables
{
maxSprites = 18;
}
後來,當我把它打印出來,
NSLog(@" maxSprites = %d ", maxSprites);
我得到:
maxSprites = 2
而且需要它的操作是18,崩潰或不工作,就好像現在真的只有2個一樣。
這怎麼可能? =)
APPLE + SHIFT + ˚F揭示變量的任何其他用途。
我已經看過其他的代碼示例,並且經常將這些變量暴露給getter和setter,並且它們也使用了@property
。我錯過了什麼嗎?我是Objective-C的新手,所以我可能只是做!編輯: hrmph,爲什麼我得到-1?
謝謝,我會盡力學習如何做一個Watchpoint。
在那之前,我想說,我做了一個APPLE + SHIFT + ˚F爲maxSprites」在項目文本,包含,忽略大小寫並不僅造成:
Game.h: int maxSprites;
Game.m: maxSprites = 18;
Game.m: NSLog(@" maxSprites = %d", maxSprites);
Game.m: NSLog(@" maxSprites = %d", maxSprites);
Game.m: NSLog(@"maxSprites is at %p", &maxSprites);
Game.m: NSLog(@"maxSprites is at %p", &maxSprites);
Game.m: NSLog(@" maxSprites = %d", maxSprites);
Game.m: NSLog(@" maxSprites = %d", maxSprites);
Game.m: NSLog(@"maxSprites is at %p", &maxSprites);
Game.m: NSLog(@"maxSprites is at %p", &maxSprites);
2日編輯:
我發現它改變使用觀察點的位置它改變了這裏:
Expression: 「*(int *) 67379960」
New Value: 2
Old Value: 18
在此行中:
[self checkMatchBarAward:spriteTypeToAdd];
奇?該功能對沒有任何作用。
編輯: - 我現在要提出一個新的問題,找出價值爲什麼會自行改變。謝謝你們的幫助,很棒的工作。
新職位將採取在這裏: Objective-C: int value changing without cause
我們可以看到該方法(或它的一些縮減版本,仍然會產生相同的錯誤)? – Chuck 2009-12-21 18:07:56
嗨Chuck,我想給NSD「答案」,綠色標誌着他。我在另一個線程繼續這個問題在這裏: http://stackoverflow.com/questions/1941686/objective-c-int-value-changing-without-cause – Jeremiah 2009-12-21 18:13:28
因爲他滿足了原來的問題:「你如何申報和保留一個int?「 – Jeremiah 2009-12-21 18:14:05