assign: 簡單賦值询兴,不更改索引計(jì)數(shù)(Reference Counting)對基礎(chǔ)數(shù)據(jù)類
copy: 建立一個(gè)索引計(jì)數(shù)為1的對象乃沙,然后釋放舊對象起趾。對NSString
retain:釋放舊的對象诗舰,將舊對象的值賦予輸入對象,再提高輸入對象的索引計(jì)數(shù)為1 ,對其他NSObject和其子類
weak和strong的區(qū)別:
weak和strong不同的是 當(dāng)一個(gè)對象不再有strong類型的指針指向它的時(shí)候 它會被釋放 训裆,即使還有weak型指針指向它眶根。一旦最后一個(gè)strong型指針離去 ,這個(gè)對象將被釋放边琉,所有剩余的weak型指針都將被清除属百。
copy與retain的區(qū)別:
copy其實(shí)是建立了一個(gè)相同的對象,而retain不是变姨;
copy是內(nèi)容拷貝族扰,retain是指針拷貝;
copy是內(nèi)容的拷貝 ,對于像NSString,的確是這樣,如果拷貝的是NSArray這時(shí)只是copy了指向array中相對應(yīng)元素的指針.這便是所謂的"淺復(fù)制"渔呵。
__block和__weak修飾符的區(qū)別
__block不管是ARC還是MRC模式下都可以使用怒竿,可以修飾對象,還可以修飾基本數(shù)據(jù)類型扩氢。
__weak只能在ARC模式下使用耕驰,也只能修飾對象(NSString),不能修飾基本數(shù)據(jù)類型(int)录豺。
__block對象可以在block中被重新賦值朦肘,__weak不可以。