iOS每日一練(2)

1.內存問題

①dealloc:

[super dealloc];    //把從父類中繼承來的實例變量釋放了

//以下兩個方法,self.xxx = nil;更好。將變量設置爲nil,可以防止野指針。
self.xxx = nil;
[xxx release];  //ARC不需要自己操作

②自動釋放池
NSAutoRelease的一個實例。當向一個對象發送autoRelease消息時,該對象會自動入池;待對象銷燬時,將會向池中所有對象發送一條release消息,釋放對象。

2.設計模式:

①常見的設計模式:
單例設計、代理設計、觀察者(通知)、工廠方法、模板方法

②KVC和KVO
KVC:一種間接訪問對象實例變量的機制,不通過存取方法就可以訪問對象的實例變量
KVO:通知機制,被觀察的對象必須使用KVC鍵值編碼來修改它的實例變量,這樣才能被觀察者觀察到。(即:KVO是建立在KVC的基礎上的)

3.多線程

4.delegate:(設計模式之一)

①delegate和Notification、block的使用區別
一.block、delegate(1對1之間的通信交互):
delegate實現協議方法,建立了代理關係後纔可以通信(通信事件比較多時使用)
PS:block不需要定義協議方法,更簡便(block類似指針,都可以作爲參數傳遞,用於回調。但是block的實現可以定義在方法中,而函數不可以)

二.notification(1對多通信交互):不需要建立關係,代碼可讀性差

5.控制器

①Viewcontroller中的loadView、viewDidLoad
loadView調用:控制器的根視圖view爲空,且此view被訪問時
viewDidLoad調用:loadView調用後

6.@synthesize、@dynamic、@property

@property和@synthesize:系統自動生成getter和setter屬性聲明,xcode4.4以後可以省略@synthesize,編譯器編譯的時候自動補上(不要寫不代表刪除了)
@dynamic:屬性的獲取和賦值方法用戶自己實現,不自動生成

7.OC的一些特性

①.m後綴的文件可以識別OC和C的代碼
.mm後綴的文件可以識別OC、C和C++的代碼
.cpp文件只能使用C/C++,而且C++的頭文件中也不能有OC的代碼
總結:
cpp文件和cpp的include(頭文件)中不可以包含obj-c的代碼。
OC和C++混用,關鍵是使用接口。實際上cpp混用的是obj-c編譯後的o文件,這個東西其實是無差別的,所以可以用。在cpp中混用OC其實就是使用OC編寫的模塊(這些模塊的後綴名都是.mm)

②私有變量(有):private修飾。OC中沒有設計私有的方法。通過延展在實現文件裏面定義方法作爲私有的方法。但是這不是真正意義上的私有方法。(注意類目和延展的區別)
多繼承(無):所有類都是NSObject的子類,通過protocol委託代理來實現多繼承的效果(協議定義的方法不一定都要實現,@required下的方法必須實現,而java中的接口方法必須都要實現,這點上還是有區別的)

③const int a = int const a;
int *const a;(普通指針,地址可變,a存儲的數值不可變)
const int* a;(常量指針,地址不可變)

④cocoa touch框架簡單舉例:
1.音頻和視頻
Core Audio
OpenAL
Media Library
AV Foundation
2.數據管理
Core Data
SQLite
3.圖形和動畫
Core Animation
OpenGL ES
Quartz 2D
Core Graphics
4.用戶應用
Address Book
Core Location
Map Kit
Store Kit

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章