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