-
Target->Build Phases->Link Binary With Libraries
Link Binary With Libraries列出了工程所需要鏈接的.framework動(dòng)態(tài)庫(kù)和.a靜態(tài)庫(kù)
對(duì)于鏈接的系統(tǒng)動(dòng)態(tài)庫(kù)而言泵肄,由于ios的系統(tǒng)是在不斷的升級(jí)中雌贱,必然會(huì)引入不少新功能和新API虫埂,而大多數(shù)都是會(huì)以.framework的方式提供給開發(fā)者
如果開發(fā)者使用了這些新引入的.framework量窘,那么因?yàn)閍pp的用戶的系統(tǒng)版本不是統(tǒng)一的捏卓,所以用戶機(jī)器上不一定都存在該動(dòng)態(tài)庫(kù)堕虹,此時(shí)就應(yīng)該把鏈接的這些新的.framework改成Optional的猪落,然后在程序代碼中去動(dòng)態(tài)判斷用戶版本,來啟動(dòng)對(duì)應(yīng)的新功能
如果不修改成Optional而保持Required的話蹬刷,在部分不存在該動(dòng)態(tài)庫(kù)用戶的機(jī)器上瓢捉,就會(huì)導(dǎo)致app一啟動(dòng)就退出,因?yàn)檎也坏綄?duì)應(yīng)的動(dòng)態(tài)庫(kù)
- 在StoryBoard上使用UIScrollView
先設(shè)置ScrollView的約束
往scrollview上添加一個(gè)視圖 UIView办成,給View添加約束
上下滑動(dòng)的設(shè)置Horizontally in Container 水平滑動(dòng)的設(shè)置Vertically in Container
兩張圖上的約束都設(shè)置完了約束都顯示黃色了再更新frame泡态,不用著急!給scrollview和上面的試圖配點(diǎn)顏色迂卢,最后效果
UIView的高度(水平滑動(dòng)設(shè)置寬度)一定要設(shè)置某弦,在IB界面上scrollview的contenSize是通過其上視圖的尺寸決定的桐汤,要布局控件可以先在上面添加一個(gè)UIView,然后在View上添加視圖靶壮。
- 原子和非原子屬性
atomic:原子屬性怔毛,為setter方法加鎖,默認(rèn)腾降,消耗大量資源
nonatomic:非原子屬性馆截,不會(huì)為setter方法加鎖,多個(gè)線程同時(shí)調(diào)用會(huì)產(chǎn)生錯(cuò)誤蜂莉,所以不要在子線程訪問setter方法 - instancetype和id
相同點(diǎn):作為方法的返回類型
不同點(diǎn):
1、instancetype 可以返回和方法所在類相同類型的對(duì)象混卵,在編譯期就可以確定返回類型映穗,幫助編譯器更好定位代碼問題。id在編譯期只能返回未知類型的對(duì)象幕随,運(yùn)行時(shí)才能確定真正返回的對(duì)象類型蚁滋。
2、instancetype只能作為返回值赘淮,id除了返回值還可以作為參數(shù).