ios 變量 copy 與 mutableCopy

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong) NSMutableString *t_ori;
@property (nonatomic, strong) NSMutableString *t_copy;
@property (nonatomic, strong) NSMutableString *t_mCopy;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.t_ori = [NSMutableString stringWithString:@"test"];
    self.t_copy  = [self.t_ori copy];
    self.t_mCopy = [self.t_ori mutableCopy];
}

@end
中若是類型是mutable的,copy, mutableCopy 後變量所只想的地址都是不一樣的。

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong) NSString *t_ori;
@property (nonatomic, strong) NSString *t_copy;
@property (nonatomic, strong) NSString *t_mCopy;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.t_ori = @"test";
    self.t_copy  = [self.t_ori copy];
    self.t_mCopy = [self.t_ori mutableCopy];
}

@end
若是是不可變類型的,則copy 後 self.t_copy 與 self.t_ori 指向的是同一個地址, self.t_mCopy則是不一樣的地址。

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong) NSString *t_ori;
@property (nonatomic, strong) NSString *t_copy;
@property (nonatomic, strong) NSString *t_mCopy;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    self.t_ori = [NSMutableString stringWithString:@"teest"];
    self.t_copy  = [self.t_ori copy];
    self.t_mCopy = [self.t_ori mutableCopy];
}

@end
這樣寫的話,3個變量的地址也都是不一樣的。
相關文章
相關標籤/搜索