OC语言-NSMutableArray为什么要用strong来修饰
Talk is cheap show you my code!
NSMutableArray属性为什么要用strong来修饰,其实就是一个深复制和浅复制的问题。
<pre name="code" class="objc">#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, copy) NSMutableArray *array;
@property(nonatomic,copy) NSMutableArray *arrayCopy;
@property(nonatomic,strong) NSMutableArray *arrayStrong;
@end
@implementation ViewController
- (NSMutableArray *)array {
if (_array == nil) {
_array = [NSMutableArray array];
}
return _array;
}
- (void)viewDidLoad {
[super viewDidLoad];
// NSMutableArray 为什么要strong的原因,此处会崩溃!因为调用的是set方法,copy会拷贝一个不可变的副本,再为其添加对象便会崩溃!
self.arrayCopy = [NSMutableArray array];
[self.arrayCopy addObject:@"copy"];
self.arrayStrong=[NSMutableArray arrayWithArray:@[@"strong",@"strong"]];
[self.arrayStrong addObject:@"strong"];
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
// NSMutableArray 此时,调用的是get方法,get方法实例化了一个可变的对象,此时是可以再为其添加对象的,这个需要需要记住!
[self.array addObject:@"copy"];
NSLog(@"%@",self.array);
}
@end
OC语言-NSMutableArray为什么要用strong来修饰的更多相关文章
- OC语言BLOCK和协议
OC语言BLOCK和协议 一.BOLCK (一)简介 BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相似 ...
- 使用OC语言编写两个超大数相乘或相加的算法的思路和超大正整数相乘的代码
正文: 在编程中,无论是OC还是C亦或是C++语言,所声明的整数变量都会在内存中占有固定的存储空间,而这些存储空间都是固定的. 比如我们知道的int.long.short.unsigend int.u ...
- iOS - OC 语言新特性
前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 O ...
- 李洪强iOS开发之OC语言BLOCK和协议
OC语言BLOCK和协议 一.BOLCK (一)简介 BLOCK是什么? 苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相 ...
- OC 语言新特性
前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力. 在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 ...
- OC语言Block 续
OC语言 Block 转载:http://blog.csdn.net/weidfyr/article/details/48138167 1.Block对象中的变量行为 结论: 在block代码块内部可 ...
- swift调用oc语言文件,第三方库文件或者自己创建的oc文件——简书作者
Swift是怎样调用OC的第三方库的呢?请看下面详情: 情况一: 1.首先打开Xcode,iOS->Application->Single View Application, 选Next. ...
- OC语言前期准备
OC语言前期准备 一.OC简介 Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码. 可以使用OC开发mac osx平台和ios平台的应 ...
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
随机推荐
- Appium自动化(9) - appium元素定位的快速入门
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 快速入门栗子:boss直聘 app ...
- mybatis 分页失败 始终pageSize = 2147483647
是在使用分页查询时 this.jobReadMapper.beginPager(pageParam);XXXXXXXXXXXXXXXXXXXXXXXXthis.xxxReadMapper.queryB ...
- redis python操作api
redis单例数据库 #redis单例连接 ''' redis-server redis_diy.conf ''' import redis conn=redis.StrictRedis(host=' ...
- mysql日志体系大盘点
MySql日志文件主要包含:错误日志.慢查询日志.事务日志.二进制日志等 Mysql的日志配置可以通过命令 show global variables like '%log%'; 执行的结果如下 &q ...
- JavaScript基础技术总结
javascript的作用 HTML网页运行在浏览器端,与用户没有交互功能,用户访问网页的时候只能看,如果网页没有程序员去更新,永远是一成不变的.JavaScript就是可以让程序运行在网页上,提高客 ...
- Android数据传递
直接用一个例子说明,简单粗暴: 数据传递会用到此界面标注id值的三个控件 Activity_zc.xm l 当点击“注册”按钮,会显示注册信息 Activity._show.xml 下面展示zcAct ...
- 容器技术之Docker数据卷
前一篇随笔中我们了解了docker的网络相关说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12952616.html:今天我们来聊一聊docker的数据管 ...
- 剑指Offer之跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解法1:递归解法 public int JumpFloor(int t ...
- 《Head First 设计模式》:策略模式
正文 一.定义 策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户. 要点: 策略模式把系统中会变化的部分抽出来封装. 二.实现步骤 1.创建策略接口 ...
- 用非常硬核的JAVA序列化手段实现对象流的持久化保存
目录 背景 对象流的概念 对象流实例 引入一张组织结构图 定义组织架构图的类 类的完整结构 用对象流保存组织架构的对象信息 核心代码 用对象流读取文件并输出 核心代码 总结 背景 在OOP(面向对象编 ...