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()方法進行創建的時候會以初始狀態為基準,每次傳參數相當于重新賦值,僅僅只是以初始狀態作為參照,不進行疊加??梢允褂米栽龌蜃詼p的變量作為參數或者使用CGAffineTransformTranslate(),它使用當前的transform作為參數然后返回一個新的transform,可以實現疊加。
5.transform的旋轉也是同樣的使用CGAffineTransformMakeRotation()方法只能有效一次。同上對應方法為CGAffineTransformRotate()。
6.同樣的transform也擁有放大縮小功能,使用的是CGAffineTransformMakeScale和CGAffineTransformScale方法。參數是x,y的比例,以1為原始比例。
7.copy : NSString; strong : 一般對象; weak : UI控件; assign : 基本數據類型;
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:
--------------------------------------手動分割線-----------------------------------------
新聞熱點
疑難解答