美文网首页
OC语言day06-05ARC中对多个对象内存管理

OC语言day06-05ARC中对多个对象内存管理

作者: liyuhong165 | 来源:发表于2016-06-15 23:17 被阅读44次

pragma mark ARC中对多个对象内存管理

pragma mark 概念

/**
 
 ARC下的@property参数
 strong 用于OC对象 相当于 MRC中的 retain
 weak   用于OC对象 相当于 MRC中的 assgin
 assgin 用于基本数据类型, 跟MRC的assgin一样
 
 */

pragma mark 代码

#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#import "Dog.h"
#pragma mark main函数
int main(int argc, const char * argv[])
{
    
    Person *p = [[Person alloc]init];
    Dog *d = [[Dog alloc]init];
    
    p.dog = d;
    d.owner = p;
    
    
    d = nil;
    
    NSLog(@"-----");
    
    p = nil;
    
    
    return 0;
}

Person.h //人类
#import <Foundation/Foundation.h>

@class Dog;
@interface Person : NSObject


// MRC, A对象想拥有B对象, 需要 对B对象进行一次retain
//      A对象不用B对象了, 需要 对B对象进行一次release
//      property的时候 进行retain, dealloc的时候 进行release


// ARC, A对象想拥有B对象, 那么就需要用一个强指针 指向 B 对象
//      A对象 不用 B 对象了,  什么都不需要做, 编译器会自动帮我们做

#warning 在ARC保存一个对象用strong, 相当于MRC的retain
@property (strong,nonatomic) Dog *dog;
@end
Person.m
#import "Person.h"

@implementation Person

- (void)dealloc
{
    NSLog(@"%s",__func__);
}

@end

Dog.h //狗类
#import <Foundation/Foundation.h>

@class Person;
@interface Dog : NSObject

//@property (nonatomic,strong)Person *owner;
//@property (nonatomic,assign)Person *owner;
// 在ARC中 如果保存对象不要用assign, 用weak
// assgin是专门用于保存基本数据类型的,如果保存对象用weak
@property (nonatomic,weak)Person *owner;

@end
Dog.m
#import "Dog.h"

@implementation Dog


- (void)dealloc
{
    NSLog(@"%s",__func__);
}


@end

相关文章

  • OC语言day06-05ARC中对多个对象内存管理

    pragma mark ARC中对多个对象内存管理 pragma mark 概念 pragma mark 代码 P...

  • iOS之从MRC到ARC内存管理详解

    概述 在iOS中开发中,我们或多或少都听说过内存管理。iOS的内存管理一般指的是OC对象的内存管理,因为OC对象分...

  • OC关于在MRC模式下的内存管理学习

    内存管理 管理范围 任何继承NSObject的对象 只有OC对象才需要进行内存管理的本质原理 1.OC对象在堆中 ...

  • iOS 内存管理

    1、只有OC对象才需要进行内存管理 1、OC对象存在堆中 2、非OC对象存在栈中(内存会被系统自动收回) ...

  • iOS 中堆和栈的区别以及冒泡排序

    在引入堆和栈之前,先要知道,iOS中的内存管理范围: OC对象需要进行内存管理,非oc对象不需要进行内存管理,比如...

  • iOS的内存管理

    iOS OC对象的内存管理 在iOS中,使用引用计数来管理OC对象内存 一个新创建的OC对象引用计数默认是1,当引...

  • 内存管理

    OC对象的内存管理 1、在iOS中,使用引用计数来管理OC对象的内存,一个新创建的OC对象引用计数默认是1,当引用...

  • 内存管理

    1.只有OC对象才需要进行内存管理的本质原因 --1.OC对象存放于堆中 --2.非OC对象存在栈中(栈内存会被系...

  • Ios面试复习--MRC内存管理

    1.只有OC对象才需要进行内存管理的本质原因 --1.OC对象存放于堆中 --2.非OC对象存在栈中(栈内存会被系...

  • 内存管理

    OC对象的内存管理 在iOS中,使用引用计数来管理OC对象的内存 一个新创建的OC对象引用计数默认是1,当引用计数...

网友评论

      本文标题:OC语言day06-05ARC中对多个对象内存管理

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