iPhone开发:将C数组作为ObjC的属性

我们想把c的数组作为objc的属性,又不想使用NSArray,该如何解决?

例如:

int d[3] = {

1,2,3

};

NSString *st[3] ={

@"111",

@"222",

@"333"

};

这样的c数组?

下面利用c数组与指针相互转化的特性来解决这个问题,指针是可以作为objc的属性的

基本代码如下:

#import <Foundation/Foundation.h>

@interface Objtest : NSObject {

int *d;

NSString **st;

}

@property int *d;

@property (nonatomic,assign) NSString **st;

@end

#import "Objtest.h"

@implementation Objtest

@synthesize d,st;

-(void)dealloc{

free(st);

free(d);

[super dealloc];

}

-(id)init{

self = [super init];

if (self) {

self.st = (NSString **)malloc(sizeof(NSString*)*3);

st[0] = @"1111";

st[1] = @"2222";

st[2] = @"3333";

self.d = (int *)malloc(sizeof(int)*3);

d[0] = 1;

d[1] = 2;

d[2] = 3;

}

return self;

}

@end

使用的时候象下面这样就可以了,可以直接用dot语法来访问

Objtest *obj = [[Objtest alloc] init];

for (int i = 0; i<3; i++) {

NSLog(@"string[%d] == %@",i,*obj.st);

obj.st++;

NSLog(@"int[%d] == %d",i,*obj.d);

obj.d++;

}

原文地址:https://www.cnblogs.com/javawebsoa/p/2458471.html