国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

一周隨筆--15.9.21

2019-11-14 18:17:06
字體:
來源:轉載
供稿:網友

一周新知識點記錄(15.9.21)

一. writeToFileatomically

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;

第二個參數的意思是:

如果為YES則保證文件的寫入原子性,就是說會先創建一個臨時文件,直到文件內容寫入成功再導入到目標文件里.

如果為NO,則直接寫入目標文件里.


 二.  NSerror

參數依次為:

1、錯誤域(NSString

2、錯誤標識 (NSInteger

3、錯誤信息 (字典)

NSError *error = [NSError errorWithDomain:@"錯誤域" code:400 userInfo:@{NSLocalizedDescr錯誤信息"}];

    NSLog(@"%@",error.localizedDescription);

    NSLog(@"%@",error.description);

注意:error.description并不是錯誤信息,NSError沒有description這個屬性來描述錯誤信息,這是對error對象的描述

參考


 三. ios7self.view.frame

ios7.0以后如果導航欄translucent為YES,即半透明,那么self.view的始終是以屏幕左上角為坐標(0,0)點的。

如果導航欄translucent為NO,即不透明。那么self.view在加載完畢之后,即視圖控制器的viewDidLoad方法之后(注意是之后,不包括viewDidLoad),它的區域不包括導航欄部分,即以導航欄左下角點為坐標(0,0)點,高度也是屏幕高度減去了導航欄高度和狀態欄高度。

特別注意在self.view加載未加載完畢,即self.view顯示之前(viewWillAppear之前),它還是以屏幕左上角為坐標(0,0)點的。


 四. 關于在異步函數中執行主隊列中的任務

    dispatch_async(dispatch_get_main_queue(), ^{

        [self initBaseView];

    });

代碼示例如上

在主隊列中添加任務,并通過異步函數執行。因為主隊列中的任務只能在主線程中執行,因此不開辟新的線程,那么該任務在主線程中是串行執行的。這樣的話上面代碼直接替換成 [self initBaseView];有什么區別呢?

區別在于:加入viewDidLoad:方法里有3段代碼,按順序從上到下依次為A B C。其中B為[self initBaseView];

運行之后,發現3段代碼的運行順序為A,B,C,沒有任何問題。但是如果將B替換成在用異步函數從主隊列中執行,那么執行的順序將會是A,C,B。

因為上面的代碼是在主隊列中加入了待執行的代碼段B(任務B),異步函數會等待主線程中在任務B之前的任務(從任務B所在的viewDidLoad:函數,到生命周期的最后一步viewDidAppear:,這些任務事先都已被放置在了主隊列中,并排在任務B的前面)執行完畢后才會將任務B從主隊列中取出,放在主線程中執行。這就是為什么先執行A,C。再執行B的原因。因此,viewDidLoad一直到viewDidAppear方法執行完畢,才會去執行B。


 五. 關于圖形上下文創建方法的參數Scale

關于創建圖形上下文的兩個方法

方法一:UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale);

方法二:UIGraphicsBeginImageContext(CGSize size);

 

方法一中3個參數依次表示:

size:創建的圖形上下文的尺寸大小

opaque:圖形上下文是否透明 YES為不透明(當圖形完全不透明是設置成YES,否則設置成NO,以優化性能)

scale:圖像縮放比例(用于調整圖像分辨率)。

 

在理解之前首先要知道的是,對于手機屏幕而言,我們用分辨率在衡量屏幕的清晰度。分辨率的單位是像素,以iphone6為例,分辨率為750*1336像素。iphone6屏幕的點數是375*568。因此iphone6屏幕一個點包含4個像素(2*2)。這個2就對應屏幕的scale屬性,可以通過[UIScreen mainScreen].scale來獲取。

 理解了上面內容,方法中的scale就不難理解了。這個scale是獲取到的圖像的縮放比例(或者說是縮放因子),它決定了獲取到的圖像的分辨率。簡單理解,假如scale的值為2,那么獲取到的圖像一個點有4個像素(長寬各2個)。通常我們把scale的值設置成0,表示設置成默認的縮放比例(跟屏幕相同),對于配備了兩倍retain屏的iphone4s、5、5s、6,這個縮放比例默認就是2;如果是6p,則默認是3,因此scale設置成0或設置成2對于iphone4s、5、5s、6是一樣的。

 對于方法二而言,并沒有scale這個參數,其實它的缺省值為1,并不是0。因此用這個方法創建圖形上下文得到的圖像質量會比較低(除非iphone3GS)。圖像的質量從圖像的大小就能區別出來,將獲取到的圖像保存到沙盒,查看圖像大小,輕松辨別。


 六.  ios7.0截屏新方法

- (BOOL)drawViewHierarchyInRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates

該方法對指定UIView作用,通過將UIView的內容繪制到圖形上下文上然后獲取圖像來達到截取UIView的效果。

作用對象:要截取的UIView對象

參數說明:

rect:圖形上下文上的區域,不是UIView的區域。將UIView繪制到圖形上下文rect的區域上。

afterUpdates:尚不清楚。推測設置成NO立即截取


 七. 預編譯輸出宏定義

#ifdef DEBUG#define DebugLog(format,…)    NSLog(@"{%s,%d}" format, __FUNCTION__,__LINE__,##__VA_ARGS__)#else#define DebugLog(format,…)#endif

 系統宏介紹:

 __LINE__:宏在預編譯時會替換成當前的行號

 __FUNCTION__:宏在預編譯時會替換成當前的函數名稱

__VA_ARGS__:簡單的說,就是將左邊…的內容替換進來

##:宏連接符

參考


 八. 運算符

&:按位與

|:按位或

^:按位亦或

~:取反

>>:右移

參考


 九. 應用打包成ipa

1.先將運行模式設置為真機

2.Xcode上面菜單——PRoduct——Archive

3.右擊工程,在finder中打開

4.右擊——顯示包內容——Products——applications 看到一個有禁止符號的文件

5.打開Itunes,將該拖進去,這樣就能在Itunes的應用程序一欄找到打包好的ipa文件了。


上一篇:Category

下一篇:Xcode7下問題匯總

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝鸡市| 泸水县| 太湖县| 密云县| 葫芦岛市| 承德市| 南乐县| 区。| 微山县| 名山县| 县级市| 庆安县| 中牟县| 克拉玛依市| 开化县| 彭水| 樟树市| 镇赉县| 乐至县| 高碑店市| 平凉市| 青海省| 武强县| 报价| 张家口市| 台安县| 开原市| 罗城| 青神县| 邵阳县| 中山市| 栾川县| 晋城| 龙里县| 长治县| 济阳县| 卢氏县| 修武县| 霸州市| 晋州市| 禄丰县|