之前一直以为retain就是简单的计数器+1,copy就是重新开辟内存复制对象: 其实不是这样,原来之前的自己独自徘徊于糊涂之中. (官方SDK,对NSString属性的定义都是用copy,而不是retain) 在明了的原因是,怕你赋值的是一个MutableString,而MutableString是可变了,如果只是retain,那么当你在外面改变了这个值的时候,你的属性的值也改变了 代码: 定义一个属性: @property (copy,nonatomic)NSString *myTest;…
copy retain assign的差别在于对象属性的set方法 NSString 与 NSMutableString NSString是不可变字符串对象,这句话的意思,结合代码: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { NSString *str = @"Shaw"; NSString *str1 = @"Roo…
依旧本着尊重原创和劳动者的原则,将地址先贴在前面: http://www.cnblogs.com/nonato/archive/2013/11/28/3447162.html,作者Nonato 以下内容为转载: IOS的对象都继承于NSObject, 该对象有一个方法:retainCount ,内存引用计数. 引用计数在很多技术都用到: window下的COM组件,多线程的信号量,读写锁,思想都一样. (一般情况下: 后面会讨论例外情况)alloc 对象分配后引用计数为1retain 对象的引用…
内存管理 内存在Objective-C开发中是一种相对稀缺的资源,拿Iphone4为例,它的内存只有512mb,所以妥善的处理好所创造,所使用的每个对象与变量都将成为一个问题.在ARC出现以前,同大部分基于C的编程语言一样,程序员需要考虑如何高效的管理内存.像在Java或是一些脚本语言中就不需要考虑内存管理的问题. 生命周期 Obj-c对象的创建,存活和销毁整个过程为它的声明周期.销毁后就会回收对象占用的内存.那么跟踪对象的使用,以及理解在什么时候释放资源十分重要. 看到这样一个问题,问为什么不…
写在前面 其实看了这么多,总结一个结论: 拷贝的初衷的目的就是为了:修改原来的对象不能影响到拷贝出来得对象 && 修改拷贝出来的对象也不能影响到原来的对象 所以,如果原来对象就是immutable的,然后用使用copy,生成的对象也还是immutable的,原来和现在的对象都是不可变的,所以就没有必要单独在内存中开辟存储空间,既生成新的对象了.所以这样生成的叫浅拷贝(shallow copy). -----------------------------------------------…
1.对象魔法 在面对对象编程中,术语对象大致意味着一系列数据(属性)以及一套访问和操作这些数据的方法. 使用对象而非全局变量以及函数的原因有多个,而最重要的好处不过以下几点: 多态:可对不同类型的对象执行相同的操作,而这些操作全部能够正常运行. 封装:对外部隐藏有关对象工作的具体细节. 继承:可基于通用类创建专用类. 1.1多态 术语多态源于希腊语,意思是有多种形态,这大致意味着即使你不知道变量指向的是哪个对象,也能够对其执行操作,且操作的行为随着对象所属的类型(类)而异. 1.2多态和方法 >…
[转载]再谈百度:KPI.无人机,以及一个必须给父母看的案例 发表于 2016-03-15   |   0 Comments   |   阅读次数 33 原文: 再谈百度:KPI.无人机,以及一个必须给父母看的案例 转载:http://xiaoyu2er.github.io/2016/03/15/baidu-do-evil/ 2016年03月15日下午歪理邪说公众号发送如下消息: 果不其然到晚上7点之前, 文章已经被人举报, 本想截取微信公众号的各种评论现在也不行了. 好在已经有很多网站转载了这…
copy总是返回不能被修改的对象,mutableCopy返回可以被修改的对象 例: NSArray *array = @[@"test", @"test2"]; NSMutableArray *arrayMu = [array copy];// arrayMu实际上被赋值成一个 NSArray 对象,这是如果调用NSMutableArray特有的方法会crash,例如[arrayMu removeObject:@"test"]; NSMutabl…
这是从 Unity教程之再谈Unity中的优化技术 这篇文章里提取出来的一部分,这篇文章让我学到了挺多可能我应该知道却还没知道的知识,写的挺好的 优化几何体   这一步主要是为了针对性能瓶颈中的”顶点处理“一项.这里的几何体就是指组成场景中对象的网格结构.   3D游戏制作都由模型制作开始.而在建模时,有一条我们需要记住:尽可能减少模型中三角形的数目,一些对于模型没有影响.或是肉眼非常难察觉到区别的顶点都要尽可能去掉.例如在下面左图中,正方体内部很多顶点都是不需要的,而把这个模型导入到Unity…
使用COPY声明NSSTRING属性 2014/05/29 JACE 发表回复 声明一个NSString属性使用copy要优于使用strong.这同样适用于遵守NSCoding协议的不可变类(immutable class),如NSNumber.NSArray.NSSet等.上面提到的这些类都有一个可变(mutable)的版本.选择使用copy的理由是,NSString属性可能被传入一个NSString实例,也可能是一个NSMutableString实例.当传入了一个NSMutableStrin…