2019-06-23 ARTS Week2

Algorithm

905. Sort Array By Parity
LeetCode鏈接

class Solution {
    public int[] sortArrayByParity(int[] A) {
        int count = A.length;
        int[] arr = new int[count];
        
        int left = 0;
        int right = count - 1;
        for (int i = 0; i < count; i++) {
            if (A[i] % 2 == 0) {
                arr[left++] = A[i];
            } else {
                arr[right--] = A[i];
            }
        }
        return arr;
    }
}

Review

Understanding weak and strong in Objective C

代碼塊很棒灼捂。為了防止循環(huán)引用我們經(jīng)嘲T啵可以看到下面這樣weak-strong的寫法。

__weak __typeof__(self) weakSelf = self;
    self.block = ^{
        __typeof__(self) strongSelf = weakSelf;
        [strongSelf doSomething];
        [strongSelf doSomethingElse];
    };

當(dāng)block創(chuàng)建的時(shí)候

當(dāng)被拷貝的時(shí)候Block是對象

block在棧上創(chuàng)建俺孙,并在棧幀返回時(shí)消失皱卓。在棧中臣缀,block對其訪問的任何內(nèi)容的存儲或生命周期沒有影響瞭亮。

如果在棧幀返回后block需要存在,則可以將它們復(fù)制到堆中蝗羊,并且此操作是顯式操作藏澳。這種方式,block將獲得引用計(jì)數(shù)和Cocoa中的所有對象一樣耀找。復(fù)制它們時(shí)翔悠,它們會捕獲它們捕獲的范圍,保留它們引用的任何對象

block可以從封閉范圍捕獲值
除了包含可執(zhí)行代碼之外野芒,block還具有從其封閉范圍捕獲狀態(tài)的能力蓄愁。請注意,block會捕獲變量及其裝飾器(即弱限定符)狞悲,

=>這解釋了為什么你需要聲明self__weak

執(zhí)行block時(shí)
當(dāng)block執(zhí)行時(shí)撮抓,對于第一個(gè)方法(doSomething),weakSelf可能是非nil效诅,而對于第二個(gè)方法(doSomethingElse)則不是

您可能會認(rèn)為胀滚,首先,這是在block內(nèi)使用self避免保留周期警告的技巧乱投。不是這種情況咽笼。在塊執(zhí)行時(shí)創(chuàng)建對self的強(qiáng)引用,而在塊聲明時(shí)評估塊中的self戚炫,從而保留對象剑刑。

但是,對于最佳實(shí)踐双肤,您應(yīng)該使用弱對象創(chuàng)建對象的強(qiáng)引用施掏。這不會產(chǎn)生循環(huán)引用,因?yàn)閎lock中的強(qiáng)指針只會在block完成之前存在(它的生命周期是block內(nèi)部)茅糜。

=>這解釋了為什么你需要定義另一個(gè)__strong self

更多解釋
正如許多人所指出的那樣七芭,“Block在棧上創(chuàng)建,并在棧幀返回時(shí)消失蔑赘。在棧中狸驳,一個(gè)Block對它訪問的任何對象的存儲或生命周期沒有影響∷跞“
即使Block(在棧上聲明的)增加了它訪問的所有對象的引用計(jì)數(shù)耙箍,這也無所謂,因?yàn)檫@個(gè)Block將在函數(shù)返回時(shí)銷毀

當(dāng)復(fù)制Block時(shí)(你看到人們通常聲明Block的屬性copy)酥馍,它會增加它訪問的所有對象的引用計(jì)數(shù)辩昆。

為什么?因?yàn)锽lock意味著稍后要執(zhí)行旨袒,所以它需要對它訪問的所有對象保持強(qiáng)引用汁针。Block可以執(zhí)行很多次术辐,所以在這個(gè)運(yùn)行之后它不會釋放self。

當(dāng)你清空Block時(shí)扇丛,它將銷毀术吗,因此它會減少它訪問的所有對象的引用計(jì)數(shù)。

AFNetworking在調(diào)用后會將Block置為空帆精,因此您不必使用weakself在Block內(nèi)部

所以有些情況下你不必在Block內(nèi)使用weakself

確保未復(fù)制Block较屿,您只是聲明并運(yùn)行它
調(diào)用Block后確保該block為nil

Tip

最近這幾天在為了職級晉升的事情選方向和技能點(diǎn),做Demo卓练,忙活了兩天感覺一無所獲隘蝎,個(gè)人的感觸就是持續(xù)不斷的成就感會刺激你更堅(jiān)定的走下去,而不斷的挫折感會打消你的積極性,讓你放棄,所以當(dāng)你去做一件事的時(shí)候一定要給予自己足夠的正向激勵钙皮,這樣你才能保證持續(xù)學(xué)習(xí)的狀態(tài)仿荆。另外吐槽一點(diǎn)的就是國內(nèi)網(wǎng)絡(luò)上很多文章寫的都有很大的問題叫胖,不能夠與時(shí)俱進(jìn),比如某個(gè)方案可能在某個(gè)IDE的版本可以但是新版本就不適用了,并且編譯原理相關(guān)的文章數(shù)量極少,且天下文章一大抄冰评,長得都差不多。

這時(shí)候突然想著自己這只菜雞什么時(shí)候能夠把基礎(chǔ)知識夯實(shí)木羹,寫一些高質(zhì)量的文章甲雅,解救那些剛?cè)腴T的編程小白,讓他們少走一些彎路坑填,幫助別人的同時(shí)也在提升自己的輸出和表達(dá)能力抛人,于是又有了努力學(xué)習(xí)的動力。

Share

最近在看關(guān)于CodeReview方面的文章脐瑰,又通讀了一遍專欄里推薦的這兩篇文章妖枚,后期還會整理更多這方面的優(yōu)質(zhì)文章。

從CODE REVIEW 談如何做技術(shù)

LinkedIn’s Tips for Highly Effective Code Review

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末苍在,一起剝皮案震驚了整個(gè)濱河市绝页,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忌穿,老刑警劉巖抒寂,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件结啼,死亡現(xiàn)場離奇詭異掠剑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)郊愧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門朴译,熙熙樓的掌柜王于貴愁眉苦臉地迎上來井佑,“玉大人,你說我怎么就攤上這事眠寿」蹋” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵盯拱,是天一觀的道長盒发。 經(jīng)常有香客問我,道長狡逢,這世上最難降的妖魔是什么宁舰? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮奢浑,結(jié)果婚禮上蛮艰,老公的妹妹穿的比我還像新娘。我一直安慰自己雀彼,他們只是感情好壤蚜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著徊哑,像睡著了一般袜刷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上实柠,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天水泉,我揣著相機(jī)與錄音,去河邊找鬼窒盐。 笑死草则,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蟹漓。 我是一名探鬼主播炕横,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼葡粒!你這毒婦竟也來了份殿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嗽交,失蹤者是張志新(化名)和其女友劉穎卿嘲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夫壁,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拾枣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梅肤。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡司蔬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出姨蝴,到底是詐尸還是另有隱情俊啼,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布左医,位于F島的核電站授帕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浮梢。R本人自食惡果不足惜豪墅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望黔寇。 院中可真熱鬧偶器,春花似錦、人聲如沸缝裤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憋飞。三九已至霎苗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間榛做,已是汗流浹背唁盏。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留检眯,地道東北人厘擂。 一個(gè)月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像锰瘸,于是被迫代替她去往敵國和親刽严。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容