语法上的小问题

语法上的小问题

深拷贝(mutableCopy)跟浅拷贝(copy)

首先看一组照片:

alt text
alt text

简单来说:深拷贝就是内容拷贝;浅拷贝就是指针拷贝。

系统对象的copy跟mutableCopy方法

无论是集合类对象,还是非集合类对象,接收到copy跟mutableCopy消息时,都会有以下准则:

  • copy返回imutable对象;如果返回mutable就会崩溃
  • mutableCopy返回mutable对象
[immutableObject copy] // 浅复制
[immutableObject mutableCopy] //非集合深复制 集合单层深复制
[mutableObject copy] //深复制
[mutableObject mutableCopy] //非集合深复制 集合单层深复制

更多信息可以参考这里


Property的修饰符

  1. 默认是strong类型
  2. xib/storyboard链接的对象可以用weak,是因为IBOutlet的view不被释放,这个链接的对象的引用计数不会为0.
  3. block声明使用copy
  4. 字符串使用copy
  5. 属性声明修饰符有:strong, weak, unsafe_unretained, readWrite,默认strong, readWrite的。
  6. 没有指明是nonatomic的时候,默认时候atomic原子操作,会影响性能。

ARC下重写 Getter and Setter

  1. 只重写setter和getter其中之一,可以直接重写:
@property (nonatomic, strong) NSMutableArray *array;
- (void)setArray:(NSMutableArray *)array {
    if (_array != array) {
        _array = nil;
        
        _array = array;
    }
}


  1. 两个一起重写的时候
@property (nonatomic, strong) NSMutableArray *array;
@synthesize array = _array;
- (void)setArray:(NSMutableArray *)array {
    if (_array != array) {
        _array = nil;
        
        _array = array;
    }
}

- (NSMutableArray *)array {
    return _array;
}

or

@interface ViewController : UIViewController{
    NSMutableArray *_array;
}

- (void)setArray:(NSMutableArray *)array {
    if (_array != array) {
        _array = nil;
        
        _array = array;
    }
}

- (NSMutableArray *)array {
    return _array;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 状态好差,自己调整不过来,这大概是继上海回来后,状态最差的一段时间,为什么今年总是水逆,我要去多参加几场婚礼去去霉...
    名字要长啊啊阅读 1,482评论 1 1
  • 国际上比较流行的戴法 V1368137752/13351133714 食指 想结婚,表示未婚 中指 已经在恋爱中 ...
    A香香_3d4f阅读 4,798评论 0 0
  • 1.用200-249字之间总结提炼整篇文章。 这篇文章,作者通过他认为智商高、情商低的学弟长征,自认为并去证明主管...
    小鱼爱笑阅读 3,304评论 0 1
  • 在写这篇文章之前,我首先想表明两点:一是我自己就是内向性格的人,所以写这篇文章并不是一个性格外向的人要排斥性格内向...
    孤独不离阅读 13,404评论 3 2