美文网首页iOS面试
iOS 内存管理面试题(在 MRC 下如何重写属性的 Sette

iOS 内存管理面试题(在 MRC 下如何重写属性的 Sette

作者: 程序员_秃头怪 | 来源:发表于2019-08-07 15:26 被阅读13次

    MRC 下如何重写属性的 SetterGetter?

    setter
    -(void)setBrand:(NSString *)brand{
    //如果实例变量指向的地址和参数指向的地址不同
        if (_brand != brand)
        {
            //将实例变量的引用计数减一
            [_brand release];
           //将参数变量的引用计数加一,并赋值给实例变量
            _brand = [brand retain];
        }
    }
    
    getter
    -(NSString *)brand{
        //将实例变量的引用计数加1后,添加自动减1
        //作用,保证调用getter方法取值时可以取到值的同时在完全不需要使用后释放
        return [[_brand retain] autorelease];
    }
    
    重写dealloc
    //MRC下 手动释放内存 可重写dealloc但不要调用dealloc  会崩溃
    -(void)dealloc{
        [_string release];
        //必须最后调用super dealloc
        [super  dealloc];
    }
    

    热文推荐

    2019 全网 iOS 面试题以及答案总结!

    相关文章

      网友评论

        本文标题:iOS 内存管理面试题(在 MRC 下如何重写属性的 Sette

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