为什么发生警告?

时间:2013-08-21 14:13:07

标签: ios objective-c nsstring warnings

我写了代码。

但是它的代码发出警告。

其警告文字为

  

不兼容的整数到指针转换分配给'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];

}

4 个答案:

答案 0 :(得分:13)

错误很清楚。

newyearnewmonth都有NSInteger *类型,您正在尝试为其分配NSInteger

NSInteger不是对象,它是本机C值,因此您可能在定义apd对象上的两个属性时出错。

我打赌你有类似

的东西
@property NSInteger * newyear;

然而它应该是

@property NSInteger newyear;

答案 1 :(得分:2)

您已将NSInteger个实例变量声明为指针,它们不应该是(它们不是对象):

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

(或者你是通过@property s)完成的:

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

只需将其更改为普通NSInteger

答案 2 :(得分:2)

我认为您已将newmonthnewyear声明为指针......

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

只需从这些行中删除*。

答案 3 :(得分:0)

我认为这可能有用......但是它

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