国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

strongvscopy

2019-11-14 18:39:34
字體:
來源:轉載
供稿:網友

一、前言
          在這里,我通過實例去介紹strong和copy的區別(%p打印出來對象的地址)
     ViewController.h           
#import <UIKit/UIKit.h>@interface ViewController : UIViewController@PRoperty(nonatomic,strong) NSString *name;@endViewController.m  - (void)viewDidLoad {    [super viewDidLoad];    NSMutableString *myName = [NSMutableString stringWithString:@"zhangsan"];    self.name = myName;    NSLog(@"myName's address:%p",myName);    NSLog(@"self.name's address:%p",self.name);} 
        運行結果是:
2015-07-21 16:38:50.911 Test[4369:2323491] myName's address:0x7967f4c02015-07-21 16:38:50.912 Test[4369:2323491] self.name's address:0x7967f4c0 
         而當我們把.h中的strong改成copy時,
@property(nonatomic,copy) NSString *name;
        運行結果是:
2015-07-21 16:40:09.938 Test[4394:2330879] myName's address:0x78deb9b02015-07-21 16:40:09.938 Test[4394:2330879] self.name's address:0x78dea270
       對比可以發現:
        當我們使用strong時,myName對象和self.name的地址相同,說明兩者指向的是同一個地址空間:0x7967f4c0
        而當我們把.h中name的strong改成copy時,myName和self.name地址不同,說明兩者指向的是不同的地址空間。
          myName是:0x78deb9b0
            self.name是:0x78dea270
     這說明:當我們使用copy的時候表示擁有不同的存儲空間,存放的是相同的內容。因此如果我們對myName進行修改,self.name是不會受到影響的。

  在ARC情況下,如果源字符串是NSString時,由于字符串不可變,所以不管是strong還是copy屬性的對象,都是指向源對象,copy只是進行了淺拷貝。    

  而如果源字符串是NSMutableString的話,strong是強引用,只是增加了源字符串的引用計數,而copy則是對源字符串進行了深拷貝,產生了一個新的對象,而且開辟了新的內存空間。此時如果我們修改源字符串的值,那么strong特性的字符串也會跟著修改,而copy的則不變。

* 大多情況下,建議使用copy,因為一般我們將對象聲明為NSString時,都不希望它改變。

 總結:
  這里你應該學到:
    1、strong和copy的區別
    2、我們可以用%p打印出對象的地址。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霍林郭勒市| 樟树市| 平顶山市| 奇台县| 安乡县| 马山县| 阳春市| 鄄城县| 澄城县| 即墨市| 阜阳市| 庆云县| 同心县| 措美县| 工布江达县| 泰来县| 福建省| 林口县| 上饶市| 乌鲁木齐县| 曲阳县| 裕民县| 新乐市| 大丰市| 响水县| 泰安市| 祥云县| 和平区| 康保县| 台江县| 海兴县| 清徐县| 凤山市| 遵义县| 井研县| 磐石市| 淮南市| 新郑市| 龙泉市| 溆浦县| 西平县|