OC中的内存管理retain总结-创新互联

在OC中,内存管理采用"引用计数"的机制。这种机制的好处在于:如果有一个对象同时被多个指针指向时,这些指针都对这个对象拥有所有权。如果一个指针放弃所有权时不会将该内存销毁,以避免出现野指针问题。

成都网络公司-成都网站建设公司成都创新互联公司十多年经验成就非凡,专业从事做网站、网站制作,成都网页设计,成都网页制作,软文平台广告投放平台等。十多年来已成功提供全面的成都网站建设方案,打造行业特色的成都网站建设案例,建站热线:18982081108,我们期待您的来电!

  那么这种机制是如何实现的呢?这里需要几个关键字:

1. retain 是引用计数+1

2. copy  复制一个原对象, 引用计数为 1, 原对象释放

3. assign  直接赋值.

4. dealloc 当引用计数为0 时, 由系统调用, 回收空间

  我们都知道,在定义一个类时,我们需要声明属性,系统会根据我们声明的属性自动生成setter和getter方法。但系统默认声明的setter方法是直接赋值的(assign), 这样我们在将对象赋值给成员变量时,就会出现上面所说的问题。为避免这种问题,方便地管理内存,我们需要在声明属性是加上关键字retain。这样,我们再将对象赋值给成员变量时,会使其retaincount+1。

@interface Monitor : NSObject {//显示器类
    NSInteger _size;//尺寸
    NSString *_type;//屏幕的类型
    float _price;//价钱
}
@property(nonatomic, retain) NSString *type;
@end
@implementation Monitor
- (void)setType:(NSString *)type
{
    if (_type != type) {
        [_type release];
        _type = [type retain];
    }
}
@end

  比如,在type属性声明时加上 retain,它的setter方法如上。

  如果声明时加了retain属性,释放时dealloc方法需要重写,代码如下:

- (void)dealloc
{
    [_type release];
    [super dealloc];
}

管理内存是需要牢记黄金法则,凡是用alloc, retain, copy关键字时,都要对应使用release或autorelease。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

分享文章:OC中的内存管理retain总结-创新互联
转载源于:https://www.cdcxhl.com/article22/idgcc.html

成都网站建设公司_创新互联,为您提供面包屑导航品牌网站设计关键词优化网页设计公司网站维护电子商务

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设