您的位置:首页 > 移动开发 > Objective-C

Objective-C 声明一个C语言类型的数组和访问方式@property

2012-12-17 11:11 363 查看
最近在做程序中需要在Objective-C类中声明一个C语言方式的一维数组:

@interface CArrayTest : NSObject
{
@private
BOOL testArray[4];
}

@end


声明属性如果是

@property(nonatomic,assign)BOOL testArray[4];


会提示错误:Property can not have array or function type BOLL[4]

=======================================================================

正确做法:不声明property属性,也就是不用系统的set个get方法,自己手动添加set和get方法

#import <Foundation/Foundation.h>

@interface CArrayTest : NSObject
{
@private
BOOL testArray[4];
}

- (void)setTestArray:(BOOL*)aTestArray;

- (BOOL *)testArray;

@end


在CArrayTest.m中的实现

#import "CArrayTest.h"

@implementation CArrayTest

- (void)setTestArray:(BOOL*)aTestArray
{
if(aTestArray != NULL)
{
for(int i = 0; i < 4; ++i)
{
testArray[i] = aTestArray[i];
}
}
}

- (BOOL *)testArray
{
return testArray;
}

@end


测试代码:

//测试代码
CArrayTest *test = [[CArrayTest alloc]init];
BOOL tmp[4] = {YES,NO,YES,YES};

test.testArray = tmp;  //或者是 [test setTestArray:tmp];

//输出
for(int i = 0; i < 4; ++i)
{
if(YES == test.testArray[i]) //或者是 [test testArray][i];
NSLog(@"YES ");
else
NSLog(@"NO ");
}


值得注意的是:

Objective-C中返回类型不能是C语言的数组,当然C语言中数组名其实就是一个对应类型指针,指向数组的首地址,

所以我们是用的BOOL类型的数组,但在set和get方法中的参数和返回值都必须是BOOL*(指针,指向数组的首地址)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐