我知道要在Object-c中使用整數創建數組,他們必須是對象。 所以如果我想與整數數組我應該像創建它們:數組中的整數
的NSNumber * myArrayInteger = [NSNumber的 NumberWithInteger:2];
到目前爲止,這麼好。 但是如果我不想組成數組可以說超過30個整數。我應該使用上面的每個代碼還是有更友好的解決方案?
我知道要在Object-c中使用整數創建數組,他們必須是對象。 所以如果我想與整數數組我應該像創建它們:數組中的整數
的NSNumber * myArrayInteger = [NSNumber的 NumberWithInteger:2];
到目前爲止,這麼好。 但是如果我不想組成數組可以說超過30個整數。我應該使用上面的每個代碼還是有更友好的解決方案?
NSArray只能包含對象,而不是像int,float等原始類型。所以你需要用NSNumber對象包裝它們。對於30個整數,你需要將它們全部包裝在NSNumber中,如果可能的話可以使用循環。
但是有一點Obj-C是C的超集。所以如果你願意,你可以使用純C的int數組。有時(特別是對於更高維數組)他們更適合維護。
int arr[30];
謝謝!我知道「C」解決方案,但我很好奇在Objective-C中該怎麼做。使用循環進行這樣的任務看起來很奇怪。 – 2011-03-05 09:07:09
對於很多事情來說,Obj-C依賴於C.例如,我們需要使用C語法來指針。數組也一樣。如果你認爲C數組會很好,那就使用它。沒有問題,也不是不好的做法。 Obj-C本身沒有任何特殊的數組語法。 – taskinoor 2011-03-05 12:59:11
就個人而言,我發現自己使用整數數組經常,我不得不簡化這個過程有點。例如:
NSArray myList=klist(4,2,3,2,3);
相當於類似:
NSArray myList = [NSArray arrayWithObjects:
[NSNumber numberWithInt:2],
[NSNumber numberWithInt:3],
[NSNumber numberWithInt:2],
[NSNumber numberWithInt:3],nil];
這裏是我使用的功能:
#define kInt(x) [NSNumber numberWithInt:x]
#define kArray(...) [NSMutableArray arrayWithObjects: __VA_ARGS__,nil]
#define klist(...) [arrays iList:__VA_ARGS__]
#define k1ist(x) [arrays iList:1,x]
#define krange(x) [arrays range:x]
#define kAppend(...) [arrays append_arrays:__VA_ARGS__,nil]
@interface arrays : NSObject
{}
+(NSMutableArray *) range:(int) i;
+(NSMutableArray *) iList:(int) n, ...;
@end
@implementation arrays
+(NSMutableArray *) range:(int) i{
NSMutableArray *myRange = [NSMutableArray array];
for (int I=0;I<i;I++)
{
[myRange addObject:kInt(I)];
}
return myRange;
}
+(NSMutableArray *) iList:(int) n, ...{
int ii;
NSMutableArray *myRange = [NSMutableArray array];
va_list myArgs;
va_start(myArgs,n);
for (int i=0;i<n;i++){
ii = va_arg(myArgs,int);
[myRange addObject: kInt(ii)];
}
return myRange;
}
@end
一個普通的C數組會很多更容易。 'int myArrayInteger [30];' – Mahesh 2011-03-05 09:01:15