美文网首页iOS
语法上的小问题

语法上的小问题

作者: kingandyoga | 来源:发表于2016-05-22 19:55 被阅读18次

    语法上的小问题

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

    首先看一组照片:

    alt textalt 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;
    }
    

    相关文章

      网友评论

        本文标题:语法上的小问题

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