2014-07-10 28 views
0

我在一個程序中收到類型錯誤警告,而不是其他,但代碼看起來對我來說是一樣的。NSInteger和int類型警告看起來不一致

首先,作爲Obj C/IOS的​​新手,我認爲我應該使用NSInteger而不是int。

這是什麼工作; (代碼從斯坦福193P當然,這表明我沒有警告)

(我曾試圖只顯示摘要,以保持它的簡單。)

CardMatchingGame.m

@interface CardMatchingGame() 
property (nonatomic, readwrite) NSInteger score; 
... 

CardGameViewController.m

interface CardGameViewController() 

@property (weak, nonatomic) IBOutlet UISlider *resultsSlider; 

....

self.scoreLabel.text = [NSString stringWithFormat:@"Score: %d", self.game.score]; 
.... 
int sliderValue = lroundf(self.resultsSlider.value); 

這裏是我的代碼模擬其他遊戲。它看起來是一樣的我,但我得到的類型onversion警告:

BullsEyeGame.m

@interface BullsEyeGame() 

@property (nonatomic, readwrite) NSInteger score; 

.... 

ViewController.m

@interface ViewController() 

@property (weak, nonatomic) IBOutlet UISlider *sliderValue; 

.... 

self.scoreLabel.text = [NSString stringWithFormat: @"%d", self.game.score]; //NSInteger should not be used as format aguments; add an explicit cast to unsigned long. 

int slider = lroundf(self.sliderValue.value); //Implicit conversion warning here 

缺少什麼我在這裏?

我理解的關鍵洞在哪裏?

+0

也許第一個不支持arm64,第二個是。或者第二個項目啓用了更多警告。 – rmaddy

+0

另外,請嘗試清潔和重建,您可能會看到一些警告已被「忘記/忽略」。 –

回答

0

這並不回答,爲什麼這兩個程序的行爲不同的核心問題,但我通過固定我的警告:

  1. 更改lroundf()舍()

  2. 更改格式從%d到%ld的說明符。

0

在第一個代碼示例中,您可以使用屬性(在.m文件中)定義score,但在第二次使用@property。如果這不是錯字,那是兩個程序之間的差異。

另外,差異可能取決於您如何爲得分變量賦值。檢查該地區的差異。

+0

謝謝。首先是一個錯字。 – tangobango

相關問題