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++;

}

 

 

 

 

 

posted @ 2010-07-23 17:12  javawebsoa  Views(239)  Comments(0Edit  收藏  举报