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