1~4章几乎都是C语言的内容,第四章末尾才开始讲 Objective-C 的内容。
1、LLVM Clang 编译器的语法格式(在 Terminal 中使用)
clang -fobjc-arc -framework <所需依赖的框架> <源程序> -o <生成文件>
说明:
-fobjc-arc:启用ARC功能
-framework <所需依赖的框架> :指定框架
<源程序>:为 .m 文件(是"点m"文件,下同),可以有多个源文件
<生成文件>:为 .out 文件
举例:
clang -fobjc-arc -framework Foundation HelloWorld.m -o hello.out
//如果没有错误将会自动生成可执行文件 hello.out
//然后运行 hello.out 程序将会打印输出
./hello.out
2、图标含义:
C:class
P:property
f :function
Pr :protocol
M:method
3、遇到的问题
//2015/6/3
NSString *str = @"hello";
NSString *str2 = [str copy];
NSString *str3 = str;
NSLog(@"%p", str); // %p操作的以十六进制形式输出指针变量所代表的地址值
NSLog(@"%p", str2);
NSLog(@"%p", str3);
//输出结果为
2015-06-03 19:43:19.720 Test[6459:303] 0x1000020c0
2015-06-03 19:43:19.726 Test[6459:303] 0x1000020c0
2015-06-03 19:43:19.727 Test[6459:303] 0x1000020c0
为什么 str2 指向的是同一块内存? 理论上 copy 操作,不是应该分配一块新的内存地址才对么?为什么是浅拷贝?
4、遇到的问题
① float a = 10.2;
NSLog(@"%10.10f", a);
//输出结果为
2015-06-03 20:00:32.725 Test[6529:303] 10.1999998093
如果把上述改一下,改为:
② float a = 10.2;
NSLog(@"%10.10f", a);
//输出结果为
2015-06-03 20:03:52.156 Test[6569:303] 10.200000
再改一下,改为:
③ float a = 1234.2;
NSLog(@"%.6f", a);
//输出结果为
2015-06-03 20:06:04.367 Test[6614:303] 1234.199951
貌似在学C语言的时候学过,应该是 float 类型只接受 6 位有效数字,具体忘了是什么原因了!!!!
补充:(输出时在一个数字前自动补0)
int b = 10;
NSLog(@"%05d", b); // 具体格式为 %0nd n代表输出的总位数
//输出结果为
2015-06-03 20:15:51.471 Test[6682:303] 00010
5、inf 代表正无穷大 // 源自单词 infinity
-inf 代表负无穷大
浮点数除以 0.0 才可以得到正无穷大(inf)或者负无穷大(-inf),如果使用整型值除以 0.0 则会得到整数取值范围的边界值。
比如, int 型的正整数除以 0.0 将会得到 2147483647,相反,如果 int 型的负数除以 0.0 则会得到 -2147483648.
6、求一个数组的长度(不是数组的有效长度)可以用公式: sizeof(数组名) / sizeof(数组变量[0])
说明:sizeof(数组名)返回整个数组占用的字节数,sizeof(数组变量[0])返回第一个数组元素占用的字节数,相除的结果就是数组元素的个数。
但是,这也可能会引发错误,比如分配了一个数组 array[100] = { 1 , 2 ,3 },虽然大小为100,但是有效的元素只有 3 个,而运用该公式,得到的长度则为 100 。所以得适当的使用它。