1. C語言函數知識:
(1)如果函數形參是基本數據類型,意味著值傳遞,修改函數內部形參不會影響外面實參的值;如果形參是指針類型,則是地址傳遞;
(2)C語言的弱語法注意點:如果函數不聲明返回值類型,那返回值類型默認為int,不是void;就算函數聲明了返回值類型,也可以不返回任何值。
(3)C語言不允許同名函數存在,即使返回值和形參不一樣也不行。
(4)鏈接就是把C語言的函數庫的函數和程序員的函數合并,生成可執行文件。(比如,在.c文件中不寫#include <stdio.h>,又在main函數中調用printf( )函數,編譯時會因為找不到printf( )函數聲明而報警告,但是鏈接時因為把系統的printf( )函數聲明和實現合并過來,而順利運行)。
(5)假設普通變量a,指針變量p,如果 p = &a,那么*p = a,意味著p訪問自己指向的存儲空間。指針變量p前面的數據類型代表p只能指向該數據類型的變量(也就是只能存儲該數據類型變量的內存地址)。
(6)定義一個指針變量:int *p; 初始化指針變量:p = &a。注意:不要操作未初始化的指針變量。
(7)
int a = 0; ?
int *p = &a,這里的"*"僅僅是個符號,代表p是個指針類型變量;
*p = a,這里的“*”代表訪問p指向的存儲空間,即間接訪問變量a。
(8)在64位系統中,所有類型指針都占用8個字節。之所以給指針分類型,是為對了指針指向的變量進行賦值取值時,知道從哪個內存地址開始,一共賦值給多少個字節或者從多少個字節中取值。
(9)C語言中,數組名就代表數組的地址,而數組首元素的地址就代表數組地址;所以,ptr = &array[0] 等價于 ptr = array, 都是用一個指針變量指向該數組。
(10)指針指向數組的首元素,指向字符串的首字符(換句話說,指向數組的指針存儲的是數組首元素的地址,指向字符串的指針存儲的是字符串的首字符地址;再換句話說,數組類型的指針指向數組首元素,字符串類型指針指向字符串首字符)。
(11)
返回指針的函數:函數返回值是個指針
指向函數的指針:定義一個指向函數的指針變量,可以間接調用函數。
(12)數組和結構體變量都是構造類型,定義一個數組和結構體都只能定義的同時賦值。
(13)定義結構體的三種方式:
(14)數據類型:
(15)內存尋址由大到小。
(16)以#開頭的指令都是預處理指令(#include, #import, #define,#undef)。
1. 預處理指令分3種:1> 宏定義 ?2> 條件編譯 ?3> 文件包含
2. 預處理指令在代碼翻譯成0和1之前就執行
3. 預處理的位置是隨便寫的,從編寫那行開始,一直到文件結尾,可以用#undef中途截止
4. 帶參數的宏格式:#define 左邊內容 右邊內容。作用簡單粗暴:編譯前把左邊的替換成右邊的。而且一定要注意,每個參數都必須帶小括號!!!!
4. 宏名一般用大寫或者以k開頭。COUNT 或者 kCount(約定俗成,沒有why)
(17)typedef用于給已存在的數據類型起別名,它對結構體和枚舉來說極其重要,不掌握的話蘋果源代碼根本看不懂!!!!! 至于枚舉只不過關鍵字和結構體不一樣,格式差求不多~~~
(18)框架:按照軟件工程的術語,框架是可以復用的設計構件,規定了應用的體系結構,闡明了整個設計、協作構件之間的依賴關系、責任分配和控制流程。也有人給出定義:框架是在一個給定的問題領域內,一個應用程序的一部分設計與實現。iOS開發中的框架指的是有許多類、函數、協議、分類和文檔等按照一定邏輯組織起來的集合,為iOS應用開發提供便利,包含foundation,UIKit,Core Animation,Core Graphics,Core Data等等。
iOS框架介紹:http://blog.csdn.net/yuhuangc/article/details/7575519
(19)BOOL類型的本質:typedef signed char BOOL;
(20)類的繼承關系和isa指針指向圖:
在實現中,Root Class 是指 NSObject,我們可以從圖中看出:
NSObject 類包括它的對象實例方法。
NSObject 的元類包括它的類方法,例如 alloc 方法。
NSObject 的元類繼承自 NSObject 類。
一個 NSObject 的類中的方法同時也會被 NSObject 的子類在查找方法時找到。
引用唐巧博文:
Objective-C對象模型及應用:http://blog.devtang.com/2013/10/15/objective-c-object-model/
談Objective-C block的實現:http://blog.devtang.com/2013/07/28/a-look-inside-blocks/?
(22)