iOS 小知識點(diǎn)總結(jié)

  • 1.iOS的UIImage的兩種不同的圖片加載方式
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@“1” ofType:@“.jpg”];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:imagePath];

此種方式是直接加載圖片,直接從文件中獲取圖片,不會出現(xiàn)緩存.

UIImage *image = [UIImage imageWithName:@“1.jpg”];

此種方式加載圖片會出現(xiàn)緩存,如果二次調(diào)用,則不會從文件中讀取,而是直接緩存中拿,會導(dǎo)致內(nèi)存越來越大.優(yōu)點(diǎn):讀取速度很快.

  • 2.iOS中的沙盒,沙盒機(jī)制,沙盒的特點(diǎn).

    • (1).沙盒:沙盒是蘋果給每個App應(yīng)用程序分配的一個獨(dú)立,封閉安全的文件目錄.文件目錄下有三個文件夾, Documents, Library, tmp. Documents文件夾會自動被iTunes備份,Library文件夾下有Caches與Preference文件夾,Caches文件夾是存放緩存數(shù)據(jù)的目錄,Preference則存放的用戶偏好設(shè)置的數(shù)據(jù),一般情況有系統(tǒng)維護(hù),開發(fā)者只能通過使用NSUserDefaults來將數(shù)據(jù)文件中保存在該文件目錄下.tmp文件目錄下則保存的是用戶使用的臨時數(shù)據(jù)文件,應(yīng)用程序會在重新加載或者關(guān)機(jī)后重啟,清除該目錄下的文件.
    • (2).沙盒機(jī)制:沙盒機(jī)制是一種安全機(jī)制.
    • (3).沙盒特點(diǎn):每一個應(yīng)用程序的活動范圍限定在自己的沙盒內(nèi);不能隨意的跨越自己的沙盒去訪問別的App的沙盒;訪問別的App的沙盒接收或請求數(shù)據(jù)必須經(jīng)過授權(quán).
    • (1).沙盒簡單對象的存儲(例:NSArray)
// 需要寫入文件中的數(shù)組
    NSArray *array = @[@"Hello",@",",@"world",@"!"];
    // 獲取沙盒Documents的地址
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    // 拼接一個plist文件地址
    NSString *filePath = [docPath stringByAppendingPathComponent:@"array.plist"];
    // 將數(shù)組寫入沙盒指定文件中
    BOOL flag = [array writeToFile:filePath atomically:YES];
    // 判斷是否寫入成功
    if (flag) {
        NSLog(@"Success!");
    } else {
        NSLog(@"Error!");
    }

NSArray * writeToFile:filePath atomically:BOOL//此方法中的atomically參數(shù)值為YES,則表示文件首先寫入在緩存文件中,寫完成后,在寫入到指定的文件中,參數(shù)為NO,則直接寫入到指定的文件中.

  • (2).沙盒簡單對象的讀取(例:NSArray)
// 獲取沙盒的Documents的地址
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    // 拼接目標(biāo)文件的地址
    NSString *filePath = [docPath stringByAppendingPathComponent:@"array.plist"];
    // 讀取其中的數(shù)據(jù)
    NSArray *array = [NSArray arrayWithContentsOfFile:filePath];
  • (3).沙盒復(fù)雜對象的存儲(例:Student)
-(void)saveStudent {
    // 聲明將要保存的Student對象
    Student *student = [[Student alloc] initWithName:@"Carson" gender:@"Male" age:23];
    // 容器,將Student的對象轉(zhuǎn)換成為data
    NSMutableData *data = [[NSMutableData alloc] init];
    // 初始化歸檔器
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    // 開始?xì)w檔
    [archiver encodeObject:student forKey:@"student"];
    // 歸檔結(jié)束
    [archiver finishEncoding];
    // 將data保存在指定文件目錄下
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    // 拼接文件目錄
    NSString *filePath = [docPath stringByAppendingPathComponent:@"student.txt"];
    // 寫入文件中
    BOOL flag = [data writeToFile:filePath atomically:YES];
    // 判斷是否寫入成功
    if (flag) {
        NSLog(@"歸檔成功!");
    } else {
        NSLog(@"歸檔失敗!");
    }
}
  • (4).沙盒復(fù)雜對象的讀取(例:Student)
-(Student *)getStudent {

    // 獲取Documents文件目錄
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    // 拼接文件目錄
    NSString *filePath = [docPath stringByAppendingPathComponent:@"student.txt"];
    // 讀取文件成為data對象
    NSMutableData *data = [NSMutableData dataWithContentsOfFile:filePath];
    // 反歸檔器聲明
    NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
    // 進(jìn)行反歸檔
    Student *student = [unarchiver decodeObjectForKey:@"student"];
    // 結(jié)束反歸檔
    [unarchiver finishDecoding];
    return student;
}
  • 4.NSFileManager的使用
-(void)testFileManager {
    // 創(chuàng)建一個NSFileManager對象(操作文件只用一個fileManager對象即可,使用單例方法)
    NSFileManager *fileManager = [NSFileManager defaultManager];
    // Documents文件路徑
    NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    // 具體文件路徑
    NSString *filePath = [docPath stringByAppendingPathComponent:@"file.txt"];
    // 寫入的內(nèi)容
    NSString *writeStr = @"Hello,this is Carson!";
    // 準(zhǔn)換成為NSData類型對象
    NSData *dataWrite = [writeStr dataUsingEncoding:NSUTF8StringEncoding];
    // 創(chuàng)建一個文件并寫入數(shù)據(jù)
    BOOL flag = [fileManager createFileAtPath:filePath contents:dataWrite attributes:nil];
    // 判斷
    if (flag) {
        NSLog(@"寫入成功!");
    } else {
        NSLog(@"寫入失敗!");
    }
    
    // 讀取數(shù)據(jù)
    NSData *dataRead = [fileManager contentsAtPath:filePath];
    // 將其轉(zhuǎn)換成為NSString類型輸出
    NSString *readStr = [[NSString alloc] initWithData:dataRead encoding:NSUTF8StringEncoding];
    // 控制臺是輸出
    NSLog(@"%@",readStr);
    
    // 判斷文件是否存在
    BOOL result1 = [fileManager fileExistsAtPath:filePath];
    if (result1) {
        NSLog(@"文件存在!");
    } else {
        NSLog(@"文件不存在!");
    }
    
    // 拷貝文件到tmp文件夾下
    NSString *tmpPath = NSTemporaryDirectory();
    // 拷貝文件地址
    NSString *fileCpyPath = [tmpPath stringByAppendingPathComponent:@"file.txt"];
    // 錯誤信息
    NSError *error = nil;
    BOOL result2 = [fileManager copyItemAtPath:filePath toPath:fileCpyPath error:&error];
    if (result2) {
        NSLog(@"文件拷貝成功!");
    } else {
        NSLog(@"文件拷貝失敗!");
    }
    
    // 比較兩個文件內(nèi)容是否相同
    BOOL result3 = [fileManager contentsEqualAtPath:filePath andPath:fileCpyPath];
    if (result3) {
        NSLog(@"文件內(nèi)容一致!");
    } else {
        NSLog(@"文件內(nèi)容不一致!");
    }
    
    // 創(chuàng)建文件夾
    NSError *error1 = nil;
    BOOL result4 = [fileManager createDirectoryAtPath:tmpPath withIntermediateDirectories:YES attributes:nil error:&error1];
    if (result4) {
        NSLog(@"創(chuàng)建文件夾成功!");
    } else {
        NSLog(@"創(chuàng)建文件夾失敗!");
    }
}
  • 5.NSFileHandle的使用
  • 6.NSDate與NSString的相互轉(zhuǎn)化
-(NSString *)dateToString:(NSDate *)date {
    // 初始化時間格式控制器
    NSDateFormatter *matter = [[NSDateFormatter alloc] init];
    // 設(shè)置設(shè)計(jì)格式
    [matter setDateFormat:@"yyyy-MM-dd hh:mm:ss zzz"];
    // 進(jìn)行轉(zhuǎn)換
    NSString *dateStr = [matter stringFromDate:date];
    return dateStr;
}
-(NSDate *)stringToDate:(NSString *)dateStr {

    // 初始化時間格式控制器
    NSDateFormatter *matter = [[NSDateFormatter alloc] init];
    // 設(shè)置設(shè)計(jì)格式
    [matter setDateFormat:@"yyyy-MM-dd hh:mm:ss zzz"];
    // 進(jìn)行轉(zhuǎn)換
    NSDate *date = [matter dateFromString:dateStr];
    return date;
}
  • 7.CoreDate持久化數(shù)據(jù)與讀取的過程

持久化數(shù)據(jù)過程:context上下文將對被管理對象的子類進(jìn)行的所有的操作(增加布讹、刪除、更新等等)進(jìn)行持久化的時候(調(diào)用save方法的時候),將所有的操作交給持久化數(shù)據(jù)協(xié)調(diào)器亥揖,持久化數(shù)據(jù)協(xié)調(diào)器會將對象類型的數(shù)據(jù)轉(zhuǎn)換為二進(jìn)制類型兄墅,然后存儲到文件系統(tǒng)中桌粉。
讀取過程:持久化數(shù)據(jù)協(xié)調(diào)器從文件系統(tǒng)中讀取出二進(jìn)制數(shù)據(jù)哨颂,根據(jù)實(shí)體對象轉(zhuǎn)換為對應(yīng)的對象類型车柠,將轉(zhuǎn)換好的數(shù)據(jù)交給上下文操作瓷患。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骡尽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子擅编,更是在濱河造成了極大的恐慌攀细,老刑警劉巖箫踩,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谭贪,居然都是意外死亡境钟,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門俭识,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慨削,“玉大人,你說我怎么就攤上這事套媚「刻” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵堤瘤,是天一觀的道長玫芦。 經(jīng)常有香客問我,道長本辐,這世上最難降的妖魔是什么桥帆? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮师郑,結(jié)果婚禮上环葵,老公的妹妹穿的比我還像新娘。我一直安慰自己宝冕,他們只是感情好张遭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著地梨,像睡著了一般菊卷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宝剖,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天洁闰,我揣著相機(jī)與錄音,去河邊找鬼万细。 笑死扑眉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赖钞。 我是一名探鬼主播腰素,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼雪营!你這毒婦竟也來了弓千?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤献起,失蹤者是張志新(化名)和其女友劉穎洋访,沒想到半個月后镣陕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姻政,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年呆抑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扶歪。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡理肺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出善镰,到底是詐尸還是另有隱情妹萨,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布炫欺,位于F島的核電站乎完,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏品洛。R本人自食惡果不足惜树姨,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望桥状。 院中可真熱鬧帽揪,春花似錦、人聲如沸辅斟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽士飒。三九已至查邢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酵幕,已是汗流浹背扰藕。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芳撒,地道東北人邓深。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像笔刹,于是被迫代替她去往敵國和親庐完。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容