完美释放实例变量的内存,定义成宏的形式

完美释放内存,麻烦自己方便他人...

定义成宏的形式:

#define RELEASE_SAFE(_Pointer) do{[_Pointer release],_Pointer = nil;}while(0) 

例:

//姓名

@property (nonatomic,copy)NSString *name;

//性别

@property (nonatomic,copy)NSString *gender;

//年龄

@property (nonatomic,copy)NSString *age;

//联系方式

@property (nonatomic,copy)NSString *phoneNumber;

//图片名

@property (nonatomic,copy)NSString *imageName;

- (void)dealloc

{

RELEASE_SAFE(_name);

RELEASE_SAFE(_gender);

RELEASE_SAFE(_age);

RELEASE_SAFE(_phoneNumber);

RELEASE_SAFE(_imageName);

[super  dealloc];

}

时间: 2024-07-30 12:13:47

完美释放实例变量的内存,定义成宏的形式的相关文章

面向对象(类,实例变量,方法定义,方法重载,构造方法,this,string类)

面向对象 类是由属性和方法组成 类是所有创建对象的模板 实例变量有默认值 实例变量至少在本类范围中有效 实例变量与局部变量冲突时,局部变量优先 类中方法定义类似于函数定义 修饰符 返回值类型 方法名(参数1,参数2) 异常{ 方法体 } 方法重载 参数个数不同 参数类型不同 参数类型相同但是顺序不同 传入参数的不同自动选取相应方法:典型例子system.out.println(整形,字符串等); 构造方法 1.构造方法无返回值 2.不定义的情况下,有默认的空构造方法 3.在对象构造时,被自动调用

iOS-简化单例模式(定义成宏 以后通用)

// .h文件 #define HMSingletonH + (instancetype)sharedInstance; // .m文件 #define HMSingletonM static id _instance; + (id)allocWithZone:(struct _NSZone *)zone { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [super allocWithZon

iOS中RGB常用的色值,同时可将对颜色的设置定义成宏,方便开发应用

如: // RGB颜色转换(16进制->10进制) #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] // 获取

JavaScript中的变量在内存中的具体存储形式

栈内存和堆内存 JavaScript中的变量分为基本类型和引用类型 基本类型是保存在栈内存中的简单数据段,它们的值都有固定的大小,保存在栈空间,通过按值访问 引用类型是保存在堆内存中的对象,值大小不固定,栈内存中存放的该对象的访问地址指向堆内存中的对象,JavaScript不允许直接访问堆内存中的位置,因此操作对象时,实际操作对象的引用 结合代码与图来理解 let a1 = 0; // 栈内存let a2 = "this is string" // 栈内存let a3 = null;

Ruby学习: 类的定义和实例变量

ruby是完全面向对象的,所有的数据都是对象,没有独立在类外的方法,所有的方法都在类中定义的. 一.类的定义语法 类的定义以 class 关键字开头,后面跟类名,以 end标识符结尾. 类中的方法以 def关键字开头,后面跟方法名及参数列表(如果有的话),以 end标识符结尾. 类也有构造函数,名字必须为initialize. 对象通过new来创建,new是类的方法. 举例如下: class Demo def initialize puts "begin create object"

属性存取、直接访问实例变量

属性的读取采用点语法,访问对应的set和get方法.而直接访问是直接访问的对象实例的内存.这两者有什么区别?在什么情况应该使用哪种方法呢? 一.区别 直接访问实例变量有如下几种特质. 1.不经过Objective-C的方法派发,直接访问实例变量的内存,速度快. 2.由于没调用set方法,所以绕过了属性定义时声明的"内存管理语义",只会保留新值,释放旧值. 3.不会触发"键值观测"KVO机制. 4.无法通过给set和get打断点来进行调试. 二.使用场景 通用情况:

实例变量(instance var)与属性(@property)的关系

实例变量(instance var)与属性(@property)的关系 Objective-C 2.0之后,声明一个@property name自动产生一个实例变量,名为_name,因此省去实例变量和属性重复输入的麻烦.而使用@synthesize可以改变_name名称.@property和@synthesize不必成对出现. @property name:指示编译器自动合成setter和getter方法,setter方法名即setName,而getter方法名即name.@property后面

朝花夕拾——看清java实例变量的初始化内幕

过一段时间可能就得去找实习,今天在宿舍翻开以前常放在枕头边的大砖头<Java编程思想>打算重温下之前学的知识点,看到有关java初始化的一些知识,综合之前看过的网页和书籍,记下自己对java实例变量初始化的理解,仅供需要的朋友参考,也为自己积累一些java编程应该注意的知识点. java中对实例变量的初始化可以在三个地方出现:定义实例变量时指定初始值:初始化块中为实例变量指定的初始值:构造器中为实例变量指定的初始值.如果理解其内部初始化的规律,一般在编程和面试中出现的变量赋值问题基本都可以解决

【类不类二】Python的类变量与实例变量

在研究类的时候,难免会有很多疑问,C论坛和博客园高手如云(不知道是不是也美女如云), 搜到了这篇博文,是介绍Python的类变量和实例变量的 ! 刚好在下对self.***这种形式的实例变 量不是很理解,就拿来与诸君共享! C博客的大伽: http://blog.csdn.net/xxkkff/article/details/4396895 上一篇[类不类2]: http://www.cnblogs.com/Ruby517/p/5709558.html 一般的类定义是写成这种形式 class <