代碼:
//TestClass.h
#import <Foundation/Foundation.h>
@interface TestClass : NSString
@property(nonatomic,strong)NSString* strongStr;
@property(nonatomic,weak)NSString* weakStr;
@property(nonatomic,retain)NSString* retainStr;
@property(nonatomic,copy)NSString* CopyStr;
@property(nonatomic,assign)NSString* assignStr;
@end
//main.c
#import <Foundation/Foundation.h>
#import "TestClass.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
TestClass *obj = [[TestClass alloc]init];
NSMutableString *str = [NSMutableString stringWithString:@"abc"];
obj.strongStr = str;
obj.retainStr = str;
obj.weakStr = str;
obj.assignStr = str;
obj.CopyStr = str;
[str appendString:@"123"];
NSLog(@"str = [%@]",str);
NSLog(@"strongStr = [%@]",obj.strongStr);
NSLog(@"retainStr = [%@]",obj.retainStr);
NSLog(@"weakStr = [%@]",obj.weakStr);
NSLog(@"assignStr = [%@]",obj.assignStr);
NSLog(@"CopyStr = [%@]",obj.CopyStr);
NSLog(@"str address = [%p]",str);
NSLog(@"strongStr address = [%p]",obj.strongStr);
NSLog(@"retainStr address = [%p]",obj.retainStr);
NSLog(@"weakStr address = [%p]",obj.weakStr);
NSLog(@"assignStr address = [%p]",obj.assignStr);
NSLog(@"CopyStr address = [%p]",obj.CopyStr);
}
return 0;
}
//輸出
2015-12-23 16:40:29.251 test_strong_weak[433:7947] str = [abc123]
2015-12-23 16:40:29.252 test_strong_weak[433:7947] strongStr = [abc123]
2015-12-23 16:40:29.253 test_strong_weak[433:7947] retainStr = [abc123]
2015-12-23 16:40:29.253 test_strong_weak[433:7947] weakStr = [abc123]
2015-12-23 16:40:29.253 test_strong_weak[433:7947] assignStr = [abc123]
2015-12-23 16:40:29.253 test_strong_weak[433:7947] CopyStr = [abc]
2015-12-23 16:40:29.253 test_strong_weak[433:7947] str address = [0x10010d8c0]
2015-12-23 16:40:29.253 test_strong_weak[433:7947] strongStr address = [0x10010d8c0]
2015-12-23 16:40:29.254 test_strong_weak[433:7947] retainStr address = [0x10010d8c0]
2015-12-23 16:40:29.254 test_strong_weak[433:7947] weakStr address = [0x10010d8c0]
2015-12-23 16:40:29.254 test_strong_weak[433:7947] assignStr address = [0x10010d8c0]
2015-12-23 16:40:29.254 test_strong_weak[433:7947] CopyStr address = [0x63626135]
由上面發現:
strong與retain類似
weak與assign類似
copy會重新開辟空間儲存當時的内容