1. C語言函數(shù)知識:
(1)如果函數(shù)形參是基本數(shù)據(jù)類型,意味著值傳遞茎辐,修改函數(shù)內(nèi)部形參不會影響外面實參的值叫挟;如果形參是指針類型,則是地址傳遞昼激;
(2)C語言的弱語法注意點:如果函數(shù)不聲明返回值類型庇绽,那返回值類型默認為int,不是void橙困;就算函數(shù)聲明了返回值類型瞧掺,也可以不返回任何值。
(3)C語言不允許同名函數(shù)存在凡傅,即使返回值和形參不一樣也不行辟狈。
(4)鏈接就是把C語言的函數(shù)庫的函數(shù)和程序員的函數(shù)合并,生成可執(zhí)行文件。(比如哼转,在.c文件中不寫#include <stdio.h>明未,又在main函數(shù)中調(diào)用printf( )函數(shù),編譯時會因為找不到printf( )函數(shù)聲明而報警告壹蔓,但是鏈接時因為把系統(tǒng)的printf( )函數(shù)聲明和實現(xiàn)合并過來趟妥,而順利運行)。
(5)假設普通變量a佣蓉,指針變量p披摄,如果 p = &a,那么*p = a偏螺,意味著p訪問自己指向的存儲空間行疏。指針變量p前面的數(shù)據(jù)類型代表p只能指向該數(shù)據(jù)類型的變量(也就是只能存儲該數(shù)據(jù)類型變量的內(nèi)存地址)。
(6)定義一個指針變量:int *p; 初始化指針變量:p = &a套像。注意:不要操作未初始化的指針變量酿联。
(7)
int a = 0; ?
int *p = &a,這里的"*"僅僅是個符號夺巩,代表p是個指針類型變量贞让;
*p = a,這里的“*”代表訪問p指向的存儲空間柳譬,即間接訪問變量a喳张。
(8)在64位系統(tǒng)中,所有類型指針都占用8個字節(jié)美澳。之所以給指針分類型销部,是為對了指針指向的變量進行賦值取值時,知道從哪個內(nèi)存地址開始制跟,一共賦值給多少個字節(jié)或者從多少個字節(jié)中取值舅桩。
(9)C語言中,數(shù)組名就代表數(shù)組的地址雨膨,而數(shù)組首元素的地址就代表數(shù)組地址擂涛;所以,ptr = &array[0] 等價于 ptr = array, 都是用一個指針變量指向該數(shù)組聊记。
(10)指針指向數(shù)組的首元素撒妈,指向字符串的首字符(換句話說,指向數(shù)組的指針存儲的是數(shù)組首元素的地址排监,指向字符串的指針存儲的是字符串的首字符地址狰右;再換句話說,數(shù)組類型的指針指向數(shù)組首元素舆床,字符串類型指針指向字符串首字符)棋蚌。
(11)
返回指針的函數(shù):函數(shù)返回值是個指針
指向函數(shù)的指針:定義一個指向函數(shù)的指針變量,可以間接調(diào)用函數(shù)。
(12)數(shù)組和結構體變量都是構造類型附鸽,定義一個數(shù)組和結構體都只能定義的同時賦值。
(13)定義結構體的三種方式:
(14)數(shù)據(jù)類型:
(15)內(nèi)存尋址由大到小坷备。
(16)以#開頭的指令都是預處理指令(#include, #import情臭, #define省撑,#undef)。
1. 預處理指令分3種:1> 宏定義 ?2> 條件編譯 ?3> 文件包含
2. 預處理指令在代碼翻譯成0和1之前就執(zhí)行
3. 預處理的位置是隨便寫的,從編寫那行開始俯在,一直到文件結尾竟秫,可以用#undef中途截止
4. 帶參數(shù)的宏格式:#define 左邊內(nèi)容 右邊內(nèi)容。作用簡單粗暴:編譯前把左邊的替換成右邊的跷乐。而且一定要注意肥败,每個參數(shù)都必須帶小括號!c堤帷B浴!
4. 宏名一般用大寫或者以k開頭浅侨。COUNT 或者 kCount(約定俗成纽谒,沒有why)
(17)typedef用于給已存在的數(shù)據(jù)類型起別名,它對結構體和枚舉來說極其重要如输,不掌握的話蘋果源代碼根本看不懂9那!2患0幕! 至于枚舉只不過關鍵字和結構體不一樣脖祈,格式差求不多~~~
(18)框架:按照軟件工程的術語肆捕,框架是可以復用的設計構件,規(guī)定了應用的體系結構盖高,闡明了整個設計慎陵、協(xié)作構件之間的依賴關系、責任分配和控制流程喻奥。也有人給出定義:框架是在一個給定的問題領域內(nèi)席纽,一個應用程序的一部分設計與實現(xiàn)。iOS開發(fā)中的框架指的是有許多類撞蚕、函數(shù)润梯、協(xié)議、分類和文檔等按照一定邏輯組織起來的集合,為iOS應用開發(fā)提供便利纺铭,包含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指針指向圖:
在實現(xiàn)中撵溃,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的實現(xiàn):http://blog.devtang.com/2013/07/28/a-look-inside-blocks/?
(21)performSelector調(diào)用和直接調(diào)用的區(qū)別
(22)