2013-08-21 248 views
2

我寫的代碼。
爲什麼發生警告?

但其代碼發生警告。

其警告文本是

不相容整數從 'NSInteger的'(又名 'INT')指針轉換分配給 'NSInteger的*' (又名 'INT *')

這是導致警告的代碼。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    ... 

    apd.newyear = [newys integerValue];//Its error happen on this row. 

    apd.newmonth = [newms integerValue];//Its error happen on this row. 

    [self dismissViewControllerAnimated:YES completion:nil]; 

} 
+0

你能告訴什麼是'apd'? –

+0

請顯示apd,newys和newms的定義。 – Fogmeister

+2

實際上,它看起來像你已經將一個屬性定義爲一個指針。即'@property(nonatomic)int * newyear;'只要刪除* – Fogmeister

回答

13

錯誤很明顯。

newyearnewmonth都有類型NSInteger *,並且您正在嘗試爲它們分配NSInteger

NSInteger不是一個對象,它是本地C值,所以你可能在定義你的apd對象的兩個屬性時犯了一個錯誤。

我敢打賭,你有類似

@property NSInteger * newyear; 

,而應該是

@property NSInteger newyear; 
2

你已經宣佈你NSInteger實例變量的指針,他們不應該是(他們是不是對象):

@interface apd : NSObject 
{ 
    NSInteger *newyear; 
    NSInteger *newmonth; 
} 
... 
@end 

(或您通過@property S DONE此):

@property (assign, nonatomic) NSInteger *newyear; 
@property (assign, nonatomic) NSInteger *newmonth; 

只是將它們更改爲普通NSInteger

2

我想你已經聲明newmonthnewyear爲指針...

@property (nonatomic) int *newyear; 
@property (nonatomic) int *newmonth; 

剛從這些行中刪除*。

0

我認爲這可能是useful..try它

@interface abc : NSObject { NSInteger firstint; NSInteger secondint; } @property (nonatomic,readwrite) NSInteger firstint; @property (nonatomic,readwrite) NSInteger secondint; @end