内存管理3@Property参数

简介:

Car.h:

#import <Foundation/Foundation.h>  @interface Card : NSObject  @end

Car.m:

#import "Card.h"  @implementation Card -(void)dealloc{     NSLog(@"Card被销毁");     [super dealloc]; } @end

Book.h:

#import <Foundation/Foundation.h>  @interface Book : NSObject  @end

Book.m:

#import "Book.h"  @implementation Book  -(void)dealloc{     NSLog(@"Book被销毁了"); }  @end

Student.h:

#import <Foundation/Foundation.h> @class Book; @class Card;  @interface Student : NSObject{     Book *_book; } //retain参数相当于.m中的setCard中的一大坨,nonatomic参数相当于set,get方法不需要枷锁,不需要线程保护,提高效率,一般都加nonatomic属性,以提高性能 @property(nonatomic,retain) Book *book; //retain参数相当于.m中的setCard中的一大坨 @property(retain) Card *card; //readonly是具有只读属性 还有readwrite属性 @property(readwrite) int age;  //属性默认就是atomic属性,能够提供给多个线程调用,get和set方法进行枷锁,保证线程安全 @property(atomic) int no; //getter实现了方法名 @property(nonatomic,getter = isRich) BOOL rich; @end

Student.m:

#import "Student.h" #import "Book.h"  @implementation Student //-(void)setBook:(Book *)book{ //    if(_book!=book) //    { //        [_book release]; //         _book=[_book retain]; //         //    } //}  //setCard相当于.h之前@property(retain)参数 自动实现 //-(void)setCard:(Card *)card{ //    if(_card!=card) //    { //        [_card release]; //        _card=[_card retain]; //    } //}  //getf方法可以由系统自动帮助实现 //-(Book *)book{ //    return _book; //} -(void)dealloc{     NSLog(@"Student被销毁");     [_book release];     [_card release];     [super dealloc]; } @end

main:

#import <Foundation/Foundation.h> #import "Student.h" #import "Book.h" #import "Card.h"  int main(int argc, const char * argv[]) {      @autoreleasepool {                  Student *student =[[Student alloc] init];         Book *book=[[Book alloc] init];         student.book=book;         //student.rich=YES;         //BOOL _rich=student.isRich;//前面Student.h中实现了getter方法名                  Card *card=[[Card alloc] init];         [card release];         [book release];         [student release];     }     return 0; }
结果:

2013-08-02 15:03:12.496 内存管理3 @property参数[871:303] Card被销毁

2013-08-02 15:03:12.498 内存管理3 @property参数[871:303] Student被销毁

2013-08-02 15:03:12.499 内存管理3 @property参数[871:303] Book被销毁了






















本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366775,如需转载请自行联系原作者

相关文章
|
6月前
|
存储 算法 关系型数据库
实时计算 Flink版产品使用合集之在Flink Stream API中,可以在任务启动时初始化一些静态的参数并将其存储在内存中吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
127 4
|
3月前
|
Python
Python变量的作用域_参数类型_传递过程内存分析
理解Python中的变量作用域、参数类型和参数传递过程,对于编写高效和健壮的代码至关重要。正确的应用这些概念,有助于避免程序中的错误和内存泄漏。通过实践和经验积累,可以更好地理解Python的内存模型,并编写出更优质的代码。
28 2
|
4月前
|
运维 Java Linux
(九)JVM成神路之性能调优、GC调试、各内存区、Linux参数大全及实用小技巧
本章节主要用于补齐之前GC篇章以及JVM运行时数据区的一些JVM参数,更多的作用也可以看作是JVM的参数列表大全。对于开发者而言,能够控制JVM的部分也就只有启动参数了,同时,对于JVM的性能调优而言,JVM的参数也是基础。
|
6月前
|
缓存 算法 安全
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(二)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
63 0
|
6月前
|
缓存 Java C#
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
151 0
|
4月前
|
存储 缓存 监控
Flink内存管理机制及其参数调优
Flink内存管理机制及其参数调优
|
4月前
|
设计模式 并行计算 安全
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
49 0
|
6月前
|
存储 弹性计算 运维
调整虚拟机内存参数的 shell 脚本
【4月更文挑战第29天】
73 2
|
6月前
|
存储 弹性计算 运维
调整虚拟机内存参数的shell 脚本
【4月更文挑战第29天】
62 0
|
6月前
|
存储 缓存 算法
JVM【带着问题去学习 01】什么是JVM+内存结构+堆内存+堆内存参数(逃逸分析)
JVM【带着问题去学习 01】什么是JVM+内存结构+堆内存+堆内存参数(逃逸分析)
53 0