IOS对象复制问题

某次面试,面试官写出一段代码,问我这段代码有什么问题吗:

具体代码如下:

@implementation Person
- (void)setName:(NSString*)newName {
self.name = newName;
}

@end

咋看之下,这不就是定义Person类中的属性age的setter方法嘛。但是跟我们的书写习惯有点不一样,感觉怪怪的!还是先写出我们的习惯写法吧!

@implementation Person
- (void)setName:(int)newName {

if(self.Name!=newName){

       [self.Name release];

        self.Name = [newAge copy];

}

}

@end

可以看到我们的习惯写法基本上不会出现什么问题,而最前面的那种写法会有问题呢?

最前面的写法的结果是name和newName都指向了同一个对象。当在调用setName:方法之后,如果newName的值被修改,那么name的值也将被修改,这应该不是我们想要的结果吧(如果你是想达到这种效果,个人认为,这样写也是一种绝妙的写法)!所以用copy来拷贝newName的值到name上,其实现的是调用一个alloc方法加上initWithString:newName来创建一个新的字符串对象。

终于明白两者的差别了吧!哈哈。。。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值