1.IOS的UI先創(chuàng)建的是UiViewController,以便對UIView進(jìn)行管理,之后在進(jìn)行創(chuàng)建的是UIView,每個UIView里面再創(chuàng)建不同的UI控件。
2.連接出錯,Terminating app due to uncaought exception 'NSUnknowKeyException', reason: '[<ViewController> setValue:forUndefinedKey:]: this class is not key value coding
3.所有屬性和方法聲明最好放在ViewController.m文件的類私有擴(kuò)展里面。
4.transform屬性使用CGAffineTransformMakeTranslation()方法進(jìn)行創(chuàng)建的時候會以初始狀態(tài)為基準(zhǔn),每次傳參數(shù)相當(dāng)于重新賦值,僅僅只是以初始狀態(tài)作為參照,不進(jìn)行疊加。可以使用自增或自減的變量作為參數(shù)或者使用CGAffineTransformTranslate(),它使用當(dāng)前的transform作為參數(shù)然后返回一個新的transform,可以實現(xiàn)疊加。
5.transform的旋轉(zhuǎn)也是同樣的使用CGAffineTransformMakeRotation()方法只能有效一次。同上對應(yīng)方法為CGAffineTransformRotate()。
6.同樣的transform也擁有放大縮小功能,使用的是CGAffineTransformMakeScale和CGAffineTransformScale方法。參數(shù)是x,y的比例,以1為原始比例。
7.copy : NSString; strong : 一般對象; weak : UI控件; assign : 基本數(shù)據(jù)類型;
8.storyboard用來描述整個軟件的界面,xib用來描述局部的軟件界面。
9.PRoperty的括號內(nèi)每個字段的作用
assign:簡單復(fù)制,不更改索引計數(shù)(Reference Counting),對應(yīng)基礎(chǔ)數(shù)據(jù)類
copy:建立一個索引計數(shù)為1的對象,然后釋放舊的對象,對應(yīng)NSString
retain:釋放舊的對象,將對象的值賦予輸入對象,再提高輸入對象的索引計數(shù)為1,對應(yīng)其他NSObject和其子類
weak和strong的區(qū)別:當(dāng)一個對象不在有strong型的指針指向它的時候,會被釋放,即使有weak型的指針指向它。一但最后一個strong類型指針離去,所有剩余的weak型指針都會被清除。
copy和strong的區(qū)別:1.copy建立的是一個相同的對象,而retain不是。2.copy是內(nèi)容拷貝,retain是指針拷貝。3.copy是內(nèi)容的拷貝,對于NSString是這樣,但是如果是NSArray類型的,則只是copy了指向array中元素的指針,即“淺復(fù)制”。
atomic和nonatomic:atomic是一種線程保護(hù)技術(shù),防止在寫未完成的時候被另一個線程讀取,如果沒有使用多線程則可以開啟nonatomic。
10.方法前面加好減號的作用????
11.xcode自定義代碼段@property (nonatomic, retain) <#type#> *<#name#>;
選中我們剛剛輸入的那段代碼,把它拖到Code Snippets Library中。
滾動到Code Snippets Library的最底部,找到一個花括號上面帶個“User”文字的圖標(biāo)。
單擊那個圖標(biāo),會彈出一個窗口。然后點(diǎn)擊窗口底部左邊的Edit按鈕
在Title和Completionshortcut這兩項中,輸入代碼片段的標(biāo)題和快捷鍵。快捷鍵用于激活代碼提示,標(biāo)題則會顯示在代碼提示中。此例中,我們輸入標(biāo)題為“Objective-C @property retain”,快捷鍵為“@property ”。
選擇對應(yīng)的platform、language和Completion scope。然后點(diǎn)擊“Done”按鈕。
此例中,platform我們選All;language選Objective-C;Completion scope選Class Interface Methods。
Completion scope指定了激活代碼提示的快捷鍵的有效的區(qū)域,比如這里我們選的Class Interface Methods就是說明這段代碼的快捷鍵在聲明類方法的區(qū)域才能激活代碼提示;在其他任何區(qū)域,無論怎么敲這個快捷鍵,都不會出現(xiàn)這段代碼的提示。
12.ScrollView代理的實現(xiàn):1.在某個類實現(xiàn)協(xié)議UIScrollViewDelegate。2.在該類可以實現(xiàn)代理中optional的方法。3.設(shè)置ScrollView.delegate = 該類。
好處:可以讓一個對象A監(jiān)聽對象B狀態(tài)的改變,等同于對象A通知對象B自己狀態(tài)的改變。
13.OSI七層模型:物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層,傳輸層,會話層,表示層,應(yīng)用層
TCP/IP四層模型:主機(jī)到網(wǎng)絡(luò)層,網(wǎng)絡(luò)連接層,傳輸層,應(yīng)用層
14.UiTableView可以直接設(shè)置rowHeight屬性來設(shè)置統(tǒng)一的行高。
而使用delegate協(xié)議實現(xiàn)heightForRowAtIndexPath方法則可以針對行號來設(shè)置行高。
15.UITableView在使用numberOfRowsInSection的時候會出現(xiàn)內(nèi)存問題,因為該方法會在cell進(jìn)入屏幕顯示范圍的時候進(jìn)行調(diào)用,而如果一個對象多次進(jìn)入屏幕顯示范圍,則該方法會給該數(shù)據(jù)多次開辟空間,雖然離開屏幕范圍的cell會自動銷毀,但是不斷得創(chuàng)建銷毀會給予cpu壓力。正確方法應(yīng)該是在創(chuàng)建對象的時候去UITableView自帶的緩沖池中尋找可用的cell,如果沒有找到可用的再開辟空間,如果找到則直接重新覆寫屬性,在創(chuàng)建以及尋找時需要reuseIdentifier這個屬性來辨別不同的cell。尋找的方法為UITableView自帶方法dequeueReuseableCellWithIdentifier:
--------------------------------------手動分割線-----------------------------------------
新聞熱點(diǎn)
疑難解答