ios基礎(chǔ)部分1

layoutSubviews何時(shí)調(diào)用的問題

layoutSubviews何時(shí)調(diào)用的問題,這個(gè)方法是當(dāng)你需要在調(diào)整subview的大小的時(shí)候需要重寫(我這個(gè)翻譯不嚴(yán)謹(jǐn),以下是原文:You should override this method only if the autoresizing behaviors of the subviews do not offer the behavior you want.),但有時(shí)候經(jīng)常指望它被調(diào)用的時(shí)候沒被調(diào)用,不希望它被調(diào)用的時(shí)候被調(diào)用了,搞的很上火。根據(jù)國外社區(qū)一個(gè)人帖子,做了總結(jié)性翻譯。

layoutSubviews在以下情況下會(huì)被調(diào)用:

1、init初始化不會(huì)觸發(fā)layoutSubviews

2、addSubview會(huì)觸發(fā)layoutSubviews

3、設(shè)置view的Frame會(huì)觸發(fā)layoutSubviews,當(dāng)然前提是frame的值設(shè)置前后發(fā)生了變化

4、滾動(dòng)一個(gè)UIScrollView會(huì)觸發(fā)layoutSubviews

5、旋轉(zhuǎn)Screen會(huì)觸發(fā)父UIView上的layoutSubviews事件

6、改變一個(gè)UIView大小的時(shí)候也會(huì)觸發(fā)父UIView上的layoutSubviews事件

iOS中assign,copy,retain之間的區(qū)別以及weak和strong的區(qū)別

@property (nonatomic, assign) NSString *title;

什么是assign,copy,retain之間的區(qū)別?

assign: 簡單賦值,不更改索引計(jì)數(shù)(Reference Counting)。

copy: 建立一個(gè)索引計(jì)數(shù)為1的對象,然后釋放舊對象

retain:釋放舊的對象,將舊對象的值賦予輸入對象,再提高輸入對象的索引計(jì)數(shù)為1

weak 和strong的區(qū)別:

(weak和strong)不同的是 當(dāng)一個(gè)對象不再有strong類型的指針指向它的時(shí)候 它會(huì)被釋放 ?,即使還有weak型指針指向它。

一旦最后一個(gè)strong型指針離去 ,這個(gè)對象將被釋放,所有剩余的weak型指針都將被清除。

可能有個(gè)例子形容是妥當(dāng)?shù)摹?/p>

想象我們的對象是一條狗,狗想要跑掉(被釋放)。

strong型指針就像是栓住的狗。只要你用牽繩掛住狗,狗就不會(huì)跑掉。如果有5個(gè)人牽著一條狗(5個(gè)strong型指針指向1個(gè)對象),除非5個(gè)牽繩都脫落 ,否著狗是不會(huì)跑掉的。

weak型指針就像是一個(gè)小孩指著狗喊到:“看!一只狗在那” 只要狗一直被栓著,小孩就能看到狗,(weak指針)會(huì)一直指向它。只要狗的牽繩脫落,狗就會(huì)跑掉,不管有多少小孩在看著它。

只要最后一個(gè)strong型指針不再指向?qū)ο?,那么對象就?huì)被釋放,同時(shí)所有的weak型指針都將會(huì)被清除。

使用assign: 對基礎(chǔ)數(shù)據(jù)類型 (NSInteger,CGFloat)和C數(shù)據(jù)類型(int, float, double, char, 等等)

使用copy: 對NSString

使用retain: 對其他NSObject和其子類

nonatomic關(guān)鍵字:

atomic是Objc使用的一種線程保護(hù)技術(shù),基本上來講,是防止在寫未完成的時(shí)候被另外一個(gè)線程讀取,造成數(shù)據(jù)錯(cuò)誤。而這種機(jī)制是耗費(fèi)系統(tǒng)資源的,所以在iPhone這種小型設(shè)備上,如果沒有使用多線程間的通訊編程,那么nonatomic是一個(gè)非常好的選擇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,628評論 30 472
  • ? 深拷貝同淺拷貝的區(qū)別:淺拷貝是指針拷貝,對一個(gè)對象進(jìn)行淺拷貝,相當(dāng)于對指向?qū)ο蟮闹羔樳M(jìn)行復(fù)制,產(chǎn)生一個(gè)新的指向...
    WSGNSLog閱讀 1,395評論 0 1
  • __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,599評論 0 6
  • 最近一朋友正準(zhǔn)備跳槽,就從各處搜索整理一些基礎(chǔ),便于朋友復(fù)習(xí),也便于自己復(fù)習(xí)查看. 1. 回答person的ret...
    smile麗語閱讀 1,904評論 0 7
  • 我想要時(shí)間靜止,可能這是一個(gè)很奇葩也很天真的想法,但是我相信,一定不只有我才有這樣的想法,很多人在很多時(shí)候都有過吧...
    魚兒離開了水閱讀 882評論 0 0

友情鏈接更多精彩內(nèi)容