美文网首页快速入门iOS
copy和mutableCopy差别以及开发中遇到的问题

copy和mutableCopy差别以及开发中遇到的问题

作者: 李周 | 来源:发表于2017-02-19 18:36 被阅读92次

    最近跟着网络中的资源重写一些自定义控件,里面写的方法很好,自己在写的过程中总结了两个出现的问题,记录如下:

    1 在对数组进行删除的时候,出现了如下的报错:

    对数组进行删除时出现的错误

    出错的原因是:实例无法识别的选择器,而且是NSArray的类型。

    很奇怪的是,明明我创建的时候是NSMutableArray类型:

    但是,后来查看时候,发现在dataArr中存储的是NSArray类型:

    所以,在赋值的时候最好:

    这样能避免在数组中出现了不变类型时候,又要进行值操作而引发的错误崩溃。

    其实在这里还是能科普一下关于copy的使用,主要是对有可变类型如NSMutableArray、NSMutableString等。

    1)对非集合类对象的操作

    非集合类对象的操作表

    需要注意的是:无论被复制前的对象(如:str)是可变或者不可变,复制之后的变量都是一个不可变的类型,如果强行使用可变类型的方法appendString:,编译时不会报错,运行后直接崩溃:

    对副本使用可变类型的方法

    2)对集合类对象的操作

    集合类对象的操作表

    当然这里还涉及到了isa指针的问题,我会放在runtime的一节中讲解

    2 在tableView中排列中文的用户名时,其实先根据第一个字的首字母形成一个组,然后在组内排列。

    1 首先更加系统的方法创建一个27个字符大小的数组dataArr(A-Z,#),其中#是一些无法识别的图形等。

    获取系统中的A-Z,#的27个字符

    2 创建一个27个字符大小的数组,并且将该数组中将每一个值都变成一个数组的类型。

    创建一个包括27个数组的数组

    3 对比首字符的字母,将汉字们进行一一归类。

    系统方法对比字符并归类

    4 去除不包含汉字的一组。

    相关文章

      网友评论

        本文标题:copy和mutableCopy差别以及开发中遇到的问题

        本文链接:https://www.haomeiwen.com/subject/ismjwttx.html