0、請寫出代碼,用blocks來取代上例中的protocol,並比較兩種方法的優點。實際應用部分?請寫出代碼,用blocks取代協議或回調方法
聲明:
#import <Foundation/Foundation.h>算法
typedef void(^TestBlock)(NSString *string);sql
@interface LO_Person : NSObject編程
+ (void)showStringFromBlcok:(TestBlock)justBlock;
@end
實現:
#import "LO_Person.h"緩存
@implementation LO_Person安全
+ (void)showStringFromBlcok:(TestBlock)justBlock性能優化
{網絡
NSString *str = @"測試blcok";多線程
justBlock(str);iphone
}
@end
調用:
[LO_Person showStringFromBlcok:^(NSString *string) {異步
NSLog(@"-- %@",string);
}];
一、 你作iphone開發時候,有哪些傳值方式,view和view之間是如何傳值的?
屬性、delegate、KVO、blocks (方法傳值,NSUserDefaults)
二、 給定的一個字符串,判斷字符串中是否含有png,有就刪除它?
[string stringByReplacingOccurrencesOfString:@"png" withString: @""]
三、 對於語句NSString* testObject = [[NSData alloc] init];testObject 在編譯時和運行時分別是什麼類型的對象?
編譯的時候是NSString類型,運行的時候是NSData類型
四、 OC中是全部對象間的交互是如何實現的?
函數指針實現
五、 目標-動做機制
目標是動做消息的接收者。動做是控件發送給目標的消息,或者從目標的角度看,它是目標爲了響應動做而實現的方法。經常使用的UIButton添加方法
六、 這段代碼有什麼問題.?會不會形成內存泄露(多線程)?在內存緊張的設備上作大循環時自動釋放池是寫在循環內好仍是循環外好?爲何?
for(int index = 0; index < largenumber; index ++){
NSString *tempStr = @」tempStr」;
NSLog(tempStr);
NSNumber *tempNumber = [NSNumber numberWithInt:2];
NSLog(tempNumber);
}
參照第三個文檔
七、 描述上拉加載、下拉刷新的實現機制?
根據下拉或者上拉的距離來判斷是否進行網絡請求
八、 什麼是沙盒(sandbox)?沙盒包含哪些文件,描述每一個文件的使用場景。如何獲取這些文件的路徑?如何獲取應用程序包中文件的路徑?
iOS應用程序只能在爲該改程序建立的文件系統中讀取文件,不能夠去其它地方訪問,此區域被成爲沙盒,因此全部的非代碼文件都要保存在此,例如圖像,圖標,聲音,映像,屬性列表,文本文件等。
默認狀況下,每一個沙盒含有3個文件夾:Documents, Library 和 tmp。
Documents:蘋果建議將程序中創建的或在程序中瀏覽到的文件數據保存在該目錄下,iTunes備份和恢復的時候會包括此目錄
Library:存儲程序的默認設置或其它狀態信息;
Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除
tmp:提供一個即時建立臨時文件的地方。
iTunes在與iPhone同步時,備份全部的Documents和Library文件。iPhone在重啓時,會丟棄全部的tmp文件。
2、獲取沙盒路徑
(1)、獲取沙盒根目錄的方法,有如下幾種: 一、用NSHomeDirectory獲取 NSString * path = NSHomeDirectory(); 二、用用戶名獲取 NSString *userName = NSUserName();//獲取建立該應用程序的用戶名 NSString *rootPath = NSHomeDirectoryForUser(userName); (2)、獲取Document路徑 NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES) objectAtIndex:0]; (3)、獲取tmp路徑 NSString *tmpPath = NSTemporaryDirectory();//tmp目錄,裏面的數據,程序退出後會沒有 (4)、獲取cache路徑 NSArray *cachePath = NSSearchPathFroDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES) objectAtIndex:0];九、 介紹一下XMPP?有什麼優缺點嗎?
XMPP:基於XML的點對點的即時通信協議。
XMPP 協議是公開的,XMPP 協議具備良好的擴展性,安全性
缺點是隻能傳輸文本
十、 談談對性能優化的見解,如何作?
從用戶體驗出發: 一、程序logging不要太長 二、相同數據不作重複獲取 三、昂貴資源要重用(cell、sqlite、date) 四、良好的編程習慣和程序設計:選擇正確的集合對象和算法來進行編程、選擇適合的數據存儲格式(plist、SQLite)、優化SQLite查詢語句 五、數據資源方面的優化(緩存和異步加載) 解決方案: