IOS对象复制问题
来源:互联网 发布:中科大源码镜像站 编辑:程序博客网 时间:2024/05/22 13:59
某次面试,面试官写出一段代码,问我这段代码有什么问题吗:
具体代码如下:
- (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来创建一个新的字符串对象。
终于明白两者的差别了吧!哈哈。。。
- IOS对象复制问题
- IOS 关于对象的复制问题
- iOS之对象复制
- iOS之对象复制
- list对象复制问题
- iOS中的复制对象 浅,深复制
- iOS 复制一个UIView对象
- ios 中 实现对象复制(转载)
- IOS学习笔记之对象复制
- iOS 复制UIView所有的对象
- jquery复制dom对象,不复制事件的问题
- 类对象的复制和拷贝问题
- 关于Java复制对象的问题
- 关于Java复制对象的问题
- BeanUtils.copyProperties 复制对象异常问题
- iOS中深复制和浅复制问题
- 虚拟机开发ios环境复制问题
- iOS对象代理的问题
- 网络拥塞控制(五) 传统TCP存在的缺陷
- 网络拥塞控制(六)HSTCP
- Ubuntu12.04安装gcc-3.4.6
- 网络拥塞控制(七)BIC-TCP
- jQuery技巧大放送 [转]
- IOS对象复制问题
- 一位强人写的电子工程师起码技术要求
- 闭着眼睛也要会打的【数据的输入和输出有几道练习题】---- HDU1089-1096
- X264编码流程详解
- HTTP 无法注册 URL http://127.0.0.1:9999/calculatorservice/metadata。进程不具有此命名空间的访问权限
- socket网络编程概述
- Android小应用:智能情景模式
- 网络拥塞控制(八) 外传之如何测量TCP的拥塞窗口
- 网络拥塞控制(九) CUBIC