31.寫一個完整的代理,包括聲明,實現(xiàn).代理:遵守協(xié)議的對象.@class MyView;第一步:指定協(xié)議:(協(xié)議名:類名+Delegate)@protocol MyViewDelegate@required-(void)changeViewBackgroudColor:(MyView *)view;@optional-(void)test;@end @interface MyView : UIView第二步:指定代理@property (nonatomic,assign)iddelegate;
@end
第三步:代理遵循協(xié)議.
第四步:代理實現(xiàn)協(xié)議里面的必須實現(xiàn)的方法和其他可選方法.
第五步:委托方通知代理開始執(zhí)行方法.
32.分析json.xml的區(qū)別,底層如何實現(xiàn)?
Json:鍵值對.數(shù)據(jù)小,不復(fù)雜.便于解析,有框架支持,適合輕量級傳輸.作為數(shù)據(jù)包個數(shù)傳輸?shù)臅r候效率更高.
xml:標(biāo)簽套內(nèi)容.xml數(shù)據(jù)兩較大,比較復(fù)雜.適合大數(shù)據(jù)量的傳輸.xml有豐富的編碼工具,比如:Dom4j,JDom.解析方式有兩種,一是通過文芳模型解析,另外一種遍歷節(jié)點.
33.ViewController的didReceiveMemoryWarning是在什么時候被調(diào)用的?
1.當(dāng)應(yīng)用程序的內(nèi)存使用接近系統(tǒng)的最大內(nèi)存使用時,應(yīng)用會向系統(tǒng)發(fā)送內(nèi)存警告,這時候系統(tǒng)會調(diào)用方法向所有ViewController發(fā)送內(nèi)存警告.
2.打開系統(tǒng)相機.
3.加載高清圖片.
默認(rèn)操作:把里面沒有用的對象進行釋放.
34.面向?qū)ο蟮娜筇卣?簡單介紹.
封裝:代碼模塊化,方便以后調(diào)用.
繼承:子類繼承父類的所有方法和屬性.
多態(tài):父類指針指向子類對象.
35.重寫一個NSString類型的,retain方式聲明name屬性的setter和getter方法.
屬性的三大特性:語義特性,原子特性,讀寫特性.
同時重寫setter和getter方法,@synchronized name = _name,關(guān)聯(lián)屬性和實例變量.
- (void)setName:(NSString *)name{
if(_name != name){
[_name retain];
[_name release];
_name = name;
}
}
- (NSString *)name{
return [[_name retain]autorelease];
}
36.簡述NotificationCenter.KVC,KVO,Delegate?并說明它們之間的區(qū)別?
NotificationCenter:消息中心.消息通知.
KVC:利用鍵-值間接訪問類中的某個屬性.
[self setValue:@"123" forKeyPath:@"name"];
NSLog(@"%@",[self valueForKeyPath:@"name"]);
KVO:利用鍵-路徑間接訪問類中的某個屬性,也就是觀察者模式(KVO+通知中心).基于KVC和通知中心,觀察的是實例變量.
Delegate:用于多個類之間的傳值.
37.What is lazy loading?
懶加載
38.對MVC的理解,好處?
MVC:是一種架構(gòu).model:數(shù)據(jù)處理,view:視圖顯示,controller:邏輯控制,負(fù)責(zé)視圖和模型之間的通信.
高類聚,低耦合,提高代碼的復(fù)用性.
39.監(jiān)測鍵盤的彈出.
通知.
[[NSNotificationCenter defaultCenter]addObserver:self? selector:@selector()? name:UIKeyboardWillShowNotification? object:nil];
40.? 5個ios,sdk庫和第三方庫.
系統(tǒng)庫:UIKit框架:負(fù)責(zé)應(yīng)用程序的圖形及事件驅(qū)動的關(guān)鍵基礎(chǔ),如:用戶界面管理,圖形和窗口支持.
Mapkit框架:地圖.
Message UI框架:電子郵件
AV Foundation框架:可用于音頻播放.
OpenAL框架:用于播放,可播放高質(zhì),高性能的網(wǎng)絡(luò)音頻
Core Data框架:將數(shù)據(jù)存儲在SQLite數(shù)據(jù)庫.
Core Media框架:播放視頻.
第三方:SDWebImage :簡化圖片處理
ShareSDK? ? 分享
SVProgressHUD? 輕量級菊花
AFNetworkin? 方便網(wǎng)絡(luò)開發(fā)
FreeStreamer? 播放音頻