Ios 为什么会发生这样的警告?

Ios 为什么会发生这样的警告?,ios,objective-c,nsstring,warnings,Ios,Objective C,Nsstring,Warnings,我写了代码。 但其代码会出现警告。 其警告文本为 分配给“NSInteger*”的整数到指针转换不兼容 (又名“int*)来自“NSInteger”(又名“int”) 这是导致警告的代码 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { ... apd.newyear = [newys integerValue];//Its error h

我写了代码。

但其代码会出现警告。

其警告文本为

分配给“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];

}

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

(或者您已通过
@property
s执行此操作):


只需将它们更改为plain
NSInteger

错误非常明显

newyear
newmonth
都有类型
NSInteger*
,您正试图为它们分配一个
NSInteger

NSInteger
不是一个对象,它是本机C值,因此您在定义
apd
对象的两个属性时可能犯了错误

我打赌你一定有

@property NSInteger * newyear;
然而它应该是

@property NSInteger newyear;

我想你已经声明了
newmonth
newyear
作为指针

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

只需从这些行中删除*即可。

我认为这可能很有用。试试看


@接口abc:NSObject
{
NSInteger firstint;
NSInteger-secondint;
}
@属性(非原子,读写)NSInteger firstint;
@属性(非原子,读写)NSInteger secondint;

@结束

你能展示什么是apd吗?请展示apd、newys和newms的定义。哦,实际上,你好像已经定义了一个属性作为指针。i、 e.
@property(非原子)int*新年只需删除*如果您阅读并理解上一个问题的答案,可能会有所帮助。
@property NSInteger newyear;
@property (nonatomic) int *newyear;
@property (nonatomic) int *newmonth;