有時候我們開發(fā)會遇到這樣一個問題:怎么將react或者point變量保存到數(shù)組Array中劲厌?如果暴力點的話骄呼,可能我們會這樣做栓始。
NSMutableArray * temp = [NSMutableArray array];
[temp addObject:CGRectMake(100, 100, 0, 100)];
很快就知道結(jié)果了屡贺,報錯届良。
數(shù)組不支持非對象類型贝攒,rect是結(jié)構體類型的數(shù)據(jù)結(jié)構盗誊。
那溫柔點來,介紹一種辦法來解決這個問題隘弊。
啟發(fā)來源:@(1) 這樣的寫法哈踱。@(1)代表什么呢?
@(1),會將其轉(zhuǎn)化成對象[NSNumber numberWithInt:5].
如果這樣做的話长捧,那么rect也是可以采用同樣的做法.找了一些資料嚣鄙,有了如下的結(jié)果辦法
添加:
聲明一個結(jié)構體,包含了rect
struct ViewRect{
CGRect rect;
};
@interface ViewController ()
typedef struct ViewRect ViewRect; // 聲明
@end
struct ViewRect left_up = {CGRectMake(0, 0, 100, 100)};
struct ViewRect left_down = {CGRectMake(0,100,200,100)};
NSMutableArray * temp = [NSMutableArray array];
[temp addObject:[NSValue valueWithBytes:&left_up objCType:@encode(ViewRect)]];
[temp addObject:[NSValue valueWithBytes:&left_up objCType:@encode(ViewRect)]];
取值:
采用值傳遞的原理取值串结。代碼如下:
ViewRect viewRect;
NSValue * value = temp[0];
[value getValue:&viewRect];
NSLog(@"show result:%@",NSStringFromCGRect(viewRect.rect));
這樣就額可以解決這個數(shù)組保存rect結(jié)構體的辦法了哑子。