Objective-C 代码规范(Code Style)(二)

本文介绍了Objective-C中的成员变量与属性存取器的命名原则,解释了为何成员变量通常带有下划线前缀,并探讨了如何正确地在类内部访问这些变量以避免内存泄漏等问题。此外,还讨论了方法命名的一般规则。

成员变量与属性存取器(Accessor)命名原则

  这也是让我纠结了挺久,一直不懂为什么很多代码里面类成员变量出现了下划线"_",而属性存取方法@property声明时不加下划线,实现时@synthesize又令两个名字相等。 

@interface SunnyTest : NSObject 
{
    NSArray * _array;  
}
@property (nonatomic,retain) NSArray * array;
@end

 

@implementation SunnyTest
@synthesize array = _array;
@end

  这样做的原因很简单,就是不暴露实例的成员变量,外界只能用@property声明的存取名来访问成员变量,所以就用下滑线加以区分。

  但在类内方法访问成员变量时就直接使用带下划线的名字,个人认为不要用self.xxxxx来使用,因为使用存取器本来就是对外的,在内部使用可能会造成一些不必要的错误,比如:

self.array = [[NSArray alloc] init]; //内存泄露

  这时就会造成内存泄露,因为[[NSArray alloc] init]生成NSArray对象之后赋值给self.array,由于array的存取方法中包含retain,这会使retainCount变成2,而实际应该是1,内存泄露且很难发现。

  改成这样的写法也是苹果官方推荐的。

_array = [[NSArray alloc] init];

 

方法(Method)起名规则

  一个规范的方法读起来应该像一句完整的话,读过之后便知函数的作用。执行性的方法应该以动词开头,小写字母开头,返回性的方法应该以返回的内容开头,但之前不要加get。

 

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
+ (id)arrayWithArray:(NSArray *)array;

  如果有参数,函数名应该作为第一个参数的提示信息,若有多个参数,在参数前也应该有提示信息(一般不必加and)

  一些经典的操作应该使用约定的动词,如initWith,insert,remove,replace,add等等。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值