他們都可以用來(lái)標(biāo)明一種非擁有的弱引用關(guān)系,但是week屬性修飾的變量崎溃,在該變量被銷毀之后蜻直,此weak變量的值會(huì)自動(dòng)被賦值為nil。而assign屬性一般是對(duì)C基本數(shù)據(jù)類型成員變量的聲明袁串,當(dāng)然也可以用在對(duì)象類型成員變量上概而,只是其代表的意義只是單純地拷貝所賦值變量的指針。即如果對(duì)某assign成員變量B賦值某對(duì)象A的指針囱修,則此B只是簡(jiǎn)單地保存此指針的值赎瑰,且并不持有對(duì)象A,也就意味著如果A被銷毀破镰,則B就指向了一個(gè)已經(jīng)被銷毀的對(duì)象餐曼,如果再對(duì)其發(fā)送消息會(huì)引發(fā)崩潰压储。
簡(jiǎn)單理解就是:week修飾的變量,在變量被銷毀之后會(huì)自動(dòng)賦值為nil源譬,而assign修飾的變量集惋,它保存的是某個(gè)指針的值,若保存的對(duì)象被銷毀則踩娘,該變量就指向了一個(gè)被銷毀的對(duì)象芋膘,再向其發(fā)送消息會(huì)引起崩潰。
PS:關(guān)于循環(huán)引用霸饲,對(duì)于過(guò)去那些使用assign屬性的地方,在ARC環(huán)境中要使用weak代替臂拓。大部分引用循環(huán)是由委托(delegate)引起的厚脉,所以應(yīng)該總是把delegate屬性聲明為weak。當(dāng)引用的對(duì)象被銷毀之后胶惰,weak引用會(huì)被自動(dòng)置為nil傻工,與assign相比這是一個(gè)巨大的進(jìn)步,因?yàn)閍ssign可以指向被釋放掉的內(nèi)存孵滞,導(dǎo)致程序崩潰中捆。