iOS

语法上的小问题

2016-05-22  本文已影响18人  kingandyoga

语法上的小问题

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

首先看一组照片:

alt textalt text

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

系统对象的copy跟mutableCopy方法

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

[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;
}
上一篇下一篇

猜你喜欢

热点阅读