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

最近在做程序中需要在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*(指针,指向数组的首地址)



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值