建議使用字面量語法建立陣列和字典。
陣列場景一:
nsnumber *num1 = @1;
nsnumber *num2 = @2;
nsnumber *num3;
nsnumber *num4 = @4;
nsnumber *num5 = @5;
nsarray *array1 = [nsarray arraywithobjects:num1, num2, num3, num4, num5, nil];
// nsarray *array2 = @[num1, num2, num3, num4, num5];
nslog(@"---array1: %@", array1);
// nslog(@"---array2: %@", array2);
// nslog(@"---%@", array1[3]);
// nslog(@"---%@", [array1 objectatindex:3]);
複製**
列印結果:
---array1: (1,2
)複製**
即:arraywithobjects:這種方式建立陣列,當遇到值為nil時,陣列停止建立,且不會報錯,實際使用時,你可能不小心使得想要加入到陣列的某個值為空了,結果得到的陣列並不是你想要的,甚至你若不知道此方法遇到nil會停止建立,造成迷惑
陣列場景二:
nsnumber *num1 = @1;
nsnumber *num2 = @2;
nsnumber *num3;
nsnumber *num4 = @4;
nsnumber *num5 = @5;
nsarray *array1 = [nsarray arraywithobjects:num1, num2, num3, num4, num5, nil];
// nsarray *array2 = @[num1, num2, num3, num4, num5];
nslog(@"---array1: %@", array1);
// nslog(@"---array2: %@", array2);
nslog(@"---%@", array1[3]);
// nslog(@"---%@", [array1 objectatindex:3]);
複製**
或
nsnumber *num1 = @1;
nsnumber *num2 = @2;
nsnumber *num3;
nsnumber *num4 = @4;
nsnumber *num5 = @5;
nsarray *array1 = [nsarray arraywithobjects:num1, num2, num3, num4, num5, nil];
// nsarray *array2 = @[num1, num2, num3, num4, num5];
nslog(@"---array1: %@", array1);
// nslog(@"---array2: %@", array2);
// nslog(@"---%@", array1[3]);
nslog(@"---%@", [array1 objectatindex:3]);
複製**
報錯結果:
複製**
即:無論字面量根據下標獲取相應的值還是objectatindex: 只要超出陣列範圍,均會崩潰
陣列場景三:
nsnumber *num1 = @1;
nsnumber *num2 = @2;
nsnumber *num3;
nsnumber *num4 = @4;
nsnumber *num5 = @5;
// nsarray *array1 = [nsarray arraywithobjects:num1, num2, num3, num4, num5, nil];
nsarray *array2 = @[num1, num2, num3, num4, num5];
// nslog(@"---array1: %@", array1);
// nslog(@"---array2: %@", array2);
// nslog(@"---%@", array1[3]);
// nslog(@"---%@", [array1 objectatindex:3]);
複製**
報錯結果:
複製**
即: 使用字面量方式建立陣列時,若遇到為空的值會崩潰,實際建立陣列時,往陣列中新增nil往往意味著錯誤,字面量方式建立陣列往往能較快的發現錯誤所在
字典場景一:
nsstring *testobject;
nsdictionary *dic1 = [nsdictionary dictionarywithobjectsandkeys:@"hh", @"firstname", @"cc", @"lastname", testobject, @"hi", @"bb", @"hello", nil];
// nsdictionary *dic2 = @;
nslog(@"---dic1: %@", dic1);
// nslog(@"---dic2: %@", dic2);
nslog(@"--%@", dic1[@"hi"]);
nslog(@"--%@", [dic1 objectforkey:@"hi"]);
nslog(@"--%@", dic1[@"none"]);
nslog(@"--%@", [dic1 objectforkey:@"kkk"]);
複製**
列印結果:
---dic1:
--(null)
--(null)
--(null)
--(null)
複製**
即: 與陣列類似,dictionarywithobjectsandkeys:方式建立字典時,遇到值為nil時,停止建立且不會報錯;通過key獲取其值,無論字面量獲取還是objectforkey:均不會報錯; 通過key獲取值,即使key為不存在的,仍不會報錯
字典場景二:
nsstring *testobject;
// nsdictionary *dic1 = [nsdictionary dictionarywithobjectsandkeys:@"hh", @"firstname", @"cc", @"lastname", testobject, @"hi", @"bb", @"hello", nil];
nsdictionary *dic2 = @;
複製**
報錯結果:
複製**
即:使用字面量方式建立字典時,遇到值為空時,會造成崩潰,這樣更容易發現**邏輯的錯誤
因此,建議多使用字面量方式(快速建立)建立陣列、字典以及nsnumber等
字面量和整數字面量
字面量是指c c 源 中直接使用的常量,字面量的意思是 一眼看上去是什麼就是什麼 例如語句 int x 10 中10就是字面量,它相對於變數,只有乙個確定的值不能改變,這個值就是它看上去的值。c c 中的字面量有一下幾種 1.0和正整數,如10 123等 負整數不是字面量,因為加了 運算子 2.浮點...
Go字面量(字面常量)
目錄 字面量字面量型別 整型字面量 浮點型字面量 複數型別字面量 字元型字面量 字串字面量 程式語言源程式中表示固定值的符號叫做字面量,也稱字面常量。一般使用裸字串行來表示不同型別的值。字面量可以被程式語言編譯器直接轉換為某個型別的值。go的字面量可以出現在兩個地方 一是用於常量和變數的初始化,二是...
資料表示字面量整型字面量
編寫程式,首先面對的是資料。在程式中,資料該如何表示出來?根據表示的方式不同,資料通常有兩種表示方式 直觀表示和指代表示。本章將詳細講解這兩種表示方式本文選自明明白白學c 大學霸。在 編寫中,資料往往是可以直接寫到 中的。對於這些資料,人們可以通過字面所表達的意思,獲知其含義,所以它們也被稱為字面量...