首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Objective-C中创建整数属性数组

在Objective-C中创建整数属性数组
EN

Stack Overflow用户
提问于 2009-01-24 23:01:30
回答 7查看 113.4K关注 0票数 62

在Objective-C中创建整数数组的属性时遇到问题。我甚至不确定在Obj-C中是否可以做到这一点,所以我希望有人能帮助我找出如何正确地做到这一点,或者提供一个替代的解决方案。

myclass.h

代码语言:javascript
复制
@interface myClass : NSObject {

@private int doubleDigits[10];
}

@property int doubleDigits;
@end

myclass.m

代码语言:javascript
复制
@implementation myClass

    @synthesize doubleDigits;
    -(id) init {

        self = [super init];

        int doubleDigits[10] = {1,2,3,4,5,6,7,8,9,10};

        return self;
    }

    @end

当我构建并运行时,我得到以下错误:

错误:属性'doubleDigits‘的类型与依瓦尔'doubleDigits'

的类型不匹配

EN

回答 7

Stack Overflow用户

发布于 2009-01-25 01:38:47

这应该是可行的:

代码语言:javascript
复制
@interface MyClass
{
    int _doubleDigits[10]; 
}

@property(readonly) int *doubleDigits;

@end

@implementation MyClass

- (int *)doubleDigits
{
    return _doubleDigits;
}

@end
票数 30
EN

Stack Overflow用户

发布于 2009-12-31 07:15:20

C数组不是属性支持的数据类型之一。请参阅Xcode文档中声明的属性页面中的“Objective-C编程语言”:

支持的类型

您可以为任何Objective-C类、核心基础数据类型或“普通旧数据”( POD )类型声明属性(请参阅C++语言注意:POD类型)。但是,有关使用核心基础类型的约束,请参阅“核心基础”。

POD不包含C数组。请参阅http://www.fnal.gov/docs/working-groups/fpcltf/Pkg/ISOcxx/doc/POD.html

如果你需要一个数组,你应该使用NSArray或NSData。

在我看来,解决方法就像使用(void *)来绕过类型检查。您可以做到这一点,但它会使您的代码更难维护。

票数 21
EN

Stack Overflow用户

发布于 2012-10-13 03:10:04

正如lucius所说,不可能有C数组属性。使用NSArray是可行的方法。数组只存储对象,所以您必须使用NSNumbers来存储int。使用新的文字语法,初始化它是非常简单和直接的:

代码语言:javascript
复制
NSArray *doubleDigits = @[ @1, @2, @3, @4, @5, @6, @7, @8, @9, @10 ];

或者:

代码语言:javascript
复制
NSMutableArray *doubleDigits = [NSMutableArray array];

for (int n = 1; n <= 10; n++)
    [doubleDigits addObject:@(n)];

有关更多信息,请访问:NSArray Class ReferenceNSNumber Class ReferenceLiteral Syntax

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/476843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档