你可以使用C數組嗎?如果是這樣,則可以使用{0, 1}
作爲{FALSE, TRUE}
C-當量,初始化一個C陣列:
unsigned short int cArray[20] = {0};
或:
static unsigned short int cArray[20]; /* all values are zeroes, or FALSEs */
這可能是更有效的,而不是使用static NSString * const
元件的陣列就像你現在正在做的一樣。測試兩個整數是否相等通常比測試兩個字符串的字典對等關係更快,其中您的程序必須逐字比較每個字符串。
要重置數組的內容,則可以使用C函數memset()
:
memset(cArray, 0, 20*sizeof(unsigned short int)); /* set all values of cArray to 0 */
如果需要動態大小的陣列,使用一個指針與calloc()
並如前所述用memset()
重置。只記得事後free()
指針,這樣你就不會得到內存泄漏:
unsigned short int *cArray = NULL;
size_t cArrayLength = 20; /* can be passed in as a value from another method, etc. */
cArray = calloc(cArrayLength, sizeof(unsigned short int)); /* values are initialized to 0 */
if (cArray) {
/* use cArray... */
*(cArray + 8) = 1; /* e.g., set ninth element with the value of 1 */
/* we don't need cArray any longer, so we free it */
free(cArray);
}
else
/* error */
如果必須在NSArray
或NSMutableArray
使用的Objective-C與NSString *
或NSNumber *
情況下,沒有現成的方法進行初始化,您需要使用循環或複製預先存在的數組,如Justin的答案中所述。如果你想朝這個方向努力,那麼創建和填充陣列的方法是一個好主意,他也是正確的。
我很好奇你爲什麼不想爲此使用循環。 – sosborn 2012-01-05 11:24:37
你的例子中的第二條語句將指針設置爲指向一個字符串,這是行不通的。 – 2012-01-05 11:25:11
@sosborn:b'coz我有7個數組,每個數組至少有50個對象,我必須單擊重置這些數組。 – Maulik 2012-01-05 11:26:23