strong vs copy

1533 단어 copy
앞말
여기에서, 나는 실례를 통해strong과copy의 차이점을 소개한다. (%p가 출력한 대상의 주소)
     ViewController.h           
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property(nonatomic,strong) NSString *name;
@end
ViewController.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:0x7967f4c0
2015-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:0x78deb9b0
2015-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
이것은 우리가 코피를 사용할 때 서로 다른 저장 공간을 가지고 같은 내용을 저장한다는 것을 의미한다.따라서 myName을 수정하면self.name은 영향을 받지 않습니다.
요약:
여기서 너는 반드시 배워야 한다.
1. 스트롱과 코피의 차이
2. 우리는%p로 대상의 주소를 출력할 수 있다.

좋은 웹페이지 즐겨찾기