读书人

IOS对象复制有关问题

发布时间: 2012-06-20 20:37:21 作者: rapoo

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来创建一个新的字符串对象。

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



读书人网 >编程

热点推荐