1、常見文件擴展名
.c C 語言源文件
.cc、.cpp C++ 語言源文件
.m Objective-C 源文件
.mm Objective-C++ 源文件
.h 頭文件
.pl Perl 源文件
.o Object(編譯后的)文件
.app 可運行的應用程序(相當於 windows 中的 .exe)
.dmg OS X 上的光盤文件壓縮包(相當於 windows 中的 ISO)
.pkg OS X 應用程序安裝包(相當於 windows 中的 exe\msi 等)
.ipa iOS 應用程序安裝包(安裝到 iPhone\iPad 等設備上面)
.xcodeproj Xcode 的項目文件(雙擊可直接打開整個項目)
.xcworkspace Xcode 工作空間文件
.plist 用於儲存用戶設置(類似於 windows 下的 .ini)
.bundle 可認為是壓縮后的文件夾(一種壓縮文件)
2、命名規范
-
按照約定,類名以大寫字母開頭,盡管沒有要求這么做。
-
實例變量、對象以及方法的名稱,通常以小寫字母開頭。為了使程序具有可讀性,名稱中要用大寫字母表示新單詞的開頭。
-
一些程序員還使用下划線作為單詞的分隔符。
-
在 OC 中小寫字母和大寫字母是有區別的。
3、OC 數據類型
char : 字符型
int : 整型 %zi 可打印無符號整形(NSUInteger)數據。%li 可打印有符號整形(NSInteger)數據。
float : 浮點型
double : 雙浮點型
BOOL: 布爾型 YES、NO
id : 通用的對象類型,可以存儲任何類型的對象,從某種意義說,它是一般對象類型。
保存 OC 中任意對象的指針(void *): 泛型指針,保存任意類型的指針變量。
類型轉換運算符通常用於將一般 id 類型的對象轉換成特定類的對象。
instancetype :
instancetype 在類型表示上,跟 id 一樣,可以表示任何對象類型。
instancetype 只能用在返回值類型上,不能像 id 一樣用在參數類型上。
instancetype 比 id 多一個好處:編譯器會檢測 instancetype 的真實類型。
enum :枚舉。在 OC 中可以將一系列值指派給一個變量。
如:enum flag{false, true};
要聲明一個枚舉類型的變量,仍需要用到關鍵字 enum,之后是枚舉的類型名,最后是變量序列。
如:enum flag endOfData = true;
定義枚舉數據類型時,可以省略數據類型的名稱,定義類型可以將變量聲明為特定枚舉數據類型中的一個。
如:enum {false, true} endOfData;
枚舉標識符可以共享相同的值。
如:enum boolean {no = 0, false = 0, yes = 1, true = 1};
OC 編譯器實際上將枚舉標識符作為整形常量來處理。
typedef:定義數據類型。
OC 允許編程者為數據類型另外指派一個名稱。在這種情況下使用 typedef 語句的主要好處是增加了變量定義的可讀性。
4、運算符
-
1)位運算:位運算符可處理任何類型的整形值,但不能處理浮點值。
- 按位與運算符:經常用於屏蔽預算,該運算符可以輕易的將數據項的特定位設置為 0 。
- 按位或運算符:通常稱為按位 OR,用於將數據項的特定位設為 1 。
- 按位異或運算符:通常稱為 XOR,不同為 1 ,相同為 0 。
- 一次求反運算符:對運算數的位翻轉。
- 左移位運算符:超出數據項的高位的位將丟失,而從低位移入的值總為 0 。
- 右移位運算符:從值的低位移出的位將丟失。把無符號的值向右移位總是左側移入 0 。對有符號的值而言,如果符號位是 0(表示該值為正的),將移入 0;
如果符號位是 1,那么在一些計算機上將移入 1(算數右移),而其他計算機上將移入 0(邏輯右移)。
-
2)運算函數:
-
開平方函數:
double sqrt(double);
-
5、表達式
-
1)循環結構
for 語句 while 語句 do … while 語句 for … in 語句 break continue
-
2)選擇結構
if 語句 switch 語句 … ? … : 條件運算語句,從右往左結合,可多極嵌套使用。 Xcode 支持如下多級運算符的非 ANSI 擴展語句: condition ? : expression 在這個語句中對 condition 求值,若為 YES 則返回值為 condition 。 若 condition 值為 NO ,則返回值為 expression 。
6、程序編譯
-
1)預處理
-
預處理程序實際上是在分析 OC 程序之前先處理這些語句。預處理程序語句使用井號(#)標記,這個符號必須是一行中的第一個非空格字符。
#define :給符號名稱指定程序常量 #import :文件包含 #ifdef、#endif、#else、#ifndef、#if、#elif :條件編譯 #undef :消除特定名稱的定義
-
7、堆和棧的區別
- 堆需要用戶手動釋放內存,而棧則是編譯器自動釋放內存