IOS學習筆記,ios學習資料
1.IOS的UI先建立的是UiViewController,以便對UIView進行管理,之後在進行建立的是UIView,每個UIView裡面再建立不同的UI控制項。
2.串連出錯,Terminating app due to uncaought exception 'NSUnknowKeyException', reason: '[<ViewController> setValue:forUndefinedKey:]: this class is not key value coding
3.所有屬性和方法聲明最好放在ViewController.m檔案的類私人擴充裡面。
4.transform屬性使用CGAffineTransformMakeTranslation()方法進行建立的時候會以初始狀態為基準,每次傳參數相當於重新賦值,僅僅只是以初始狀態作為參照,不進行疊加。可以使用自增或自減的變數作為參數或者使用CGAffineTransformTranslate(),它使用當前的transform作為參數然後返回一個新的transform,可以實現疊加。
5.transform的旋轉也是同樣的使用CGAffineTransformMakeRotation()方法只能有效一次。同上對應方法為CGAffineTransformRotate()。
6.同樣的transform也擁有放大縮小功能,使用的是CGAffineTransformMakeScale和CGAffineTransformScale方法。參數是x,y的比例,以1為原始比例。
7.copy : NSString; strong : 一般對象; weak : UI控制項; assign : 基礎資料型別 (Elementary Data Type);
8.storyboard用來描述整個軟體的介面,xib用來描述局部的軟體介面。
9.property的括弧內每個欄位的作用
assign:簡單複製,不更改索引計數(Reference Counting),對應基礎資料類
copy:建立一個索引計數為1的對象,然後釋放舊的對象,對應NSString
retain:釋放舊的對象,將對象的值賦予輸入對象,再提高輸入對象的索引計數為1,對應其他NSObject和其子類
weak和strong的區別:當一個對象不在有strong型的指標指向它的時候,會被釋放,即使有weak型的指標指向它。一但最後一個strong類型指標離去,所有剩餘的weak型指標都會被清除。
copy和strong的區別:1.copy建立的是一個相同的對象,而retain不是。2.copy是內容拷貝,retain是指標拷貝。3.copy是內容的拷貝,對於NSString是這樣,但是如果是NSArray類型的,則只是copy了指向array中元素的指標,即“淺複製”。
atomic和nonatomic:atomic是一種線程保護技術,防止在寫未完成的時候被另一個線程讀取,如果沒有使用多線程則可以開啟nonatomic。
10.方法前面加好減號的作用????
11.xcode自訂程式碼片段@property (nonatomic, retain) <#type#> *<#name#>;
選中我們剛剛輸入的那段代碼,把它拖到Code Snippets Library中。
滾動到Code Snippets Library的最底部,找到一個花括弧上面帶個“User”文字的表徵圖。
單擊那個表徵圖,會彈出一個視窗。然後點擊視窗底部左邊的Edit按鈕
在Title和Completionshortcut這兩項中,輸入程式碼片段的標題和快速鍵。快速鍵用於啟用代碼提示,標題則會顯示在代碼提示中。此例中,我們輸入標題為“Objective-C @property retain”,快速鍵為“@property ”。
選擇對應的platform、language和Completion scope。然後點擊“Done”按鈕。
此例中,platform我們選All;language選Objective-C;Completion scope選Class Interface Methods。
Completion scope指定了啟用代碼提示的快速鍵的有效地區,比如這裡我們選的Class Interface Methods就是說明這段代碼的快速鍵在聲明類方法的地區才能啟用代碼提示;在其他任何地區,無論怎麼敲這個快速鍵,都不會出現這段代碼的提示。
12.ScrollView代理的實現:1.在某個類實現協議UIScrollViewDelegate。2.在該類可以實現代理中optional的方法。3.設定ScrollView.delegate = 該類。
好處:可以讓一個對象A監聽對象B狀態的改變,等同於對象A通知對象B自己狀態的改變。
13.OSI七層模型:物理層,資料連結層,網路層,傳輸層,會話層,展示層,應用程式層
TCP/IP四層模型:主機到網路層,網路連接層,傳輸層,應用程式層
14.UiTableView可以直接設定rowHeight屬性來設定統一的行高。
而使用delegate協議實現heightForRowAtIndexPath方法則可以針對行號來設定行高。
15.UITableView在使用numberOfRowsInSection的時候會出現記憶體問題,因為該方法會在cell進入螢幕顯示範圍的時候進行調用,而如果一個對象多次進入螢幕顯示範圍,則該方法會給該資料多次開闢空間,雖然離開螢幕範圍的cell會自動銷毀,但是不斷得建立銷毀會給予cpu壓力。正確方法應該是在建立對象的時候去UITableView內建的緩衝池中尋找可用的cell,如果沒有找到可用的再開闢空間,如果找到則直接重新覆寫屬性,在建立以及尋找時需要reuseIdentifier這個屬性來辨別不同的cell。尋找的方法為UITableView內建方法dequeueReuseableCellWithIdentifier:
--------------------------------------手動分割線-----------------------------------------