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 可访问问题的主要内容,如果未能解决你的问题,请参考以下文章