iOS 使用COPY宣告NSSTRING屬性

2021-09-06 22:43:21 字數 722 閱讀 4585

2014/05/29

jace

宣告乙個nsstring屬性使用copy要優於使用strong。這同樣適用於遵守nscoding協議的不可變類(immutable class),如nsnumber、nsarray、nsset等。上面提到的這些類都有乙個可變(mutable)的版本。選擇使用copy的理由是,nsstring屬性可能被傳入乙個nsstring例項,也可能是乙個nsmutablestring例項。當傳入了乙個nsmutablestring例項時,字串的值可能會在背後悄悄變化。來瞧瞧這個例子:

@inte***ce book : nsobject

@property (strong, nonatomic) nsstring *title;

@end

在另乙個類中,我們有乙個這樣的方法:

- (void)stringexample
執行後會發現,圖書的標題是「worst book ever」。如果我們更改為使用copy宣告title屬性,圖書的標題變為了「best book ever」,這也是我們想要的結果。在第一種情況下,我們使用strong宣告該屬性,字串的retain計數將增加1,屬性與字串指向同乙個記憶體位址。這意味著任何指向這個記憶體位址的變數都可改變這個值,本例中booktitle變數的值改變後,title屬性值也跟隨變化。如果改用copy的話,則會為book類建立乙個字串副本。也就是說修改bootitle,不再會影響字串副本值,這是多數情況下我們想要的結果。

iOS switch的引數怎麼使用NSString

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!實際上,object c中switch的引數只能是int,byte,char,short的型別。然而,我們經常要使用到nsstring來作為引數,我在這裡舉例說明一種間接實現的方法。這個方法一眼看上去好像不靈活限制了nsstring引數的個數,但話...

iOS中copy 學習筆記

copy表達的屬性與strong類似。但是設定方法並不保留新值,而是將其copy,當屬性為nsstring時,經常用此特質來保護其封裝性,因為傳遞給設定方法的新值可能指向nsmutablestring類的例項。但是nsmutablestring是可以更改的,如果不設定copy,那麼nsstring的...

iOS 中copy的簡單理解

乙個物件的準確型別是在分配記憶體空間的時候指定 程式設計師指定的型別只是讓該物件有該型別的方法。能否使用指定類的方法取決於執行時,這個物件的型別是否正確。理解這兩句句話很重要 有可變不可變之分時 可變 不可變 copy 可變 可變 mutablecopy 不可變 可變 mutablecopy 不可變...