代码书写规范(摸索、试行)
1、类的对外数据接口,声明为属性变量。其它为成员变量。
2、成员变量一律写在.m文件内。其中全局变量可以根据相应的作用起名字。局部变量,一律不起任何名字,仅用其类型的缩写代替,如button\label\view等,在注释中标明这个变量的作用和意义。次意义在于降低代码的复杂度,提高可读性,同时强制程序员写注释,而不是编造那些乱七八糟、半中半洋的变量名糊弄事。
3、一个类的纯成员变量,请以“ m_ ”开头,方便管理。(意为my_)
//////////////////////// 一种代码风格,我比较倾向的//////////////////
1. @interface MyClass:NSObject{ MyObjecct *_object; } @property(nonamtic, retain) MyObjecct *object; @end
@implementatin MyClass @synthesize object=_object; 然后我在该类的.m文件中全部使用_object去操作,不用self.object去操作(虽然可以用)。 在其它类中,才用self.object去操作。
问:这样是比较规范的声明属性和成员变量吗?而且对成员变量和属性的使用也是比较规范的吗?还有就是如果我这样写的话,在该类的.m文件中 _object = [Myobject alloc] init];给他赋空间后,我操作完它后,需不需要在后面马上release,还是直接在dealloc中release; 也就是说,这种情况下,成员变量是不是不需要在该类的.m实现文件中release,不关在各个方法中alloc了多少次,只需要在dealloc中release一次就好。
2.如果这样写呢? @interface MyClass:NSObject{ MyObjecct *object; } @property(nonamtic, retain) MyObjecct *object; @end
@implementatin MyClass @synthesize object; 问:那还有没有必要定义成员变量?直接用属性不是能够全搞定吗?就在本类的.m文件中全部用self.object。(代码规范里面有没有规定,申明成了属性,就不用申明为成员变量了呢?) 如果在该类实现的.m文件中使用了self.object = [Myobject alloc] init];的话,用完后是不是得立即release,然后还得在dealloc中再release一次。
回答:
self.object = [Myobject alloc] init]autorelease] 然后dealloc里面再release一次,这样才算正常操作
_object = [Myobject alloc] init] 创建的对象是全局的,所以只能在dealloc里面进行释放
感觉在本类中用— 在外部打点调用不是太规范,但是这样操作也不会有什么问题(个人感觉)
参考:http://www.w3c.com.cn/属性和成员变量的dealloc疑问
///////////////////////////////////////////////////
////////////////////////// 下面也是我的风格 //////////////////////////
虽然我建议以属性的形式声明所有成员,但是有些人更喜欢实例变量,尤其是私有实例变量。可以在@implementation
这一块中声明私有实例变量,如下列代码所示:
1 2 3 |
@implementation Something {
NSString *_name;
}
|
这段代码在@implementation
块中声明私有实例变量,而不是在公有的头文件中声明,这是一种非常好的封装方式,也使得头文件更易读。跟其他变量一样,ARC也会自动对实例变量进行保留和释放。实例变量的默认存储类型是strong
,但可以使用如下代码声明weak
实例变量:
1 2 3 |
@implementation Something {
__weak NSString *name;
}
|
////////////////////////// //////////////////////////