Nsinteger 可访问问题

Posted

技术标签:

【中文标题】Nsinteger 可访问问题【英文标题】:Nsinteger accessible issue 【发布时间】:2013-05-23 05:21:43 【问题描述】:

当我尝试将 nsinteger 值添加到数组中时,它会显示警告,

指向整数转换的不兼容指针将'NSInteger *'(又名'int *')发送到'NSInteger'(又名'int')类型的参数;用 * 取消引用

到达代码时崩溃

[sizary1 addObject:[NSNumber numberWithInteger:Quant.quantity]];

数量声明为

 @property (nonatomic) NSInteger * quantity;

我应该做些什么改变?

【问题讨论】:

不要使用指针,使用这个@property (nonatomic) NSInteger quantity; 【参考方案1】:

NSInteger 中不需要 *。使用

@property (nonatomic) NSInteger  quantity;

崩溃

[NSNumber numberWithInteger:Quant.quantity]];

numberWithInteger: 期望一个值而不是它的指针引用,所以它崩溃了。

使属性不带*,它会正常工作

【讨论】:

【参考方案2】:

1)在这种情况下,您使用quantity 作为指针。因此NSInteger 在这种情况下不允许指针。

2) 你将 quantity 传递给 numberWithInteger:,它需要一个 NSInteger。它与 setObject: 无关。您可能想要复制 quantity 或直接将数量传递给 setObject:。

【讨论】:

拥有指向 NSInteger 值的指针是完全有效的。在这种情况下不合适,但允许。【参考方案3】:

您正在声明一个指向NSInteger 的指针。 NSNumber 需要 NSInteger 本身,而不是指向它的指针。我会将您的财产更改为

@property (nonatomic) NSInteger quantity;

【讨论】:

【参考方案4】:

NSInteger 是原始类型,这意味着它可以本地存储在堆栈中。 您不需要使用指针来访问它。 NSInteger 是原始值类型;你真的不需要使用指针。所以你的声明应该是

    @property (nonatomic) NSInteger quantity;

【讨论】:

以上是关于Nsinteger 可访问问题的主要内容,如果未能解决你的问题,请参考以下文章

int 和 NSInteger 有啥区别? [复制]

为啥我不用 * 声明 NSInteger

NSInteger 类型

在 NSInteger 返回类型方法上返回 nil

比较 NSInteger 和 NSUInteger

如何将 NSIndexPath 转换为 NSInteger?