Object-c 一些代码规范

点引用是地道的Objective-C 2.0的风格。它被使用于简单的属性set、get操作,但对象的其它行为不
应该使用它。


Setters中对NSString进行copy
永远不要仅仅retain一个字符串。这避免了调用者在你不知道的情况下对字符串作出了修改。不要作出那样的假设:你接受的对象是一个NSString对象而不是NSMutableString对象。

- (void)setFoo:(NSString *)aFoo {
[foo_ autorelease];
foo_ = [aFoo copy];

}总结:接受NSString作为参数的setter,应该copy它所接受的字符串。

这从逻辑上遵守了NSString的setter必须使用copy而不是retain。


实现委托模式的类应该:

拥有一个名为delegate_的成员变量来引用委托。
因此,访问器方法应该名为delegate和setDelegate:。
delegate_对象不应该被retained。

不要直接比较BOOL变量与YES/NO。不仅仅这影响可读性,结果可能与你想的不同。

使用nil的检查来检查应用程序的逻辑,而不是避免崩溃。Objective-C运行时会处理向一个nil的对象
发送消息的情况。如果方法没有返回值,就没关系。


总结:不要抛出Objective-C异常,但准备从第三方的调用或者系统调用捕捉异常。


当使用Objective-C++写基于栈的对象的代码时,如果抛出Objective-C异常,对象不会被清
理。(析构函数)


dealloc中对象被释放的顺序应该与他们在@interface中声明的顺序一致


A u to lea se之后reta in

当给一个变量赋值新的对象时,必须先释放掉旧的对象以避免内存泄露。有一些正确的方法来处理
它。我们选择autorelease之后retain的方法因为事实证明它更少地出错。注意大的循环会填满
autorelease pool,并且可能效率上会差一点,但这点折衷我们认为是可以接受的。

- (void)setFoo:(GMFoo *)aFoo {
[foo_ autorelease]; // Won't dealloc if |foo_| == |aFoo|
foo_ = [aFoo retain];

}

总结:给对象赋值时遵守autorelease之后retain的模式。


当创建临时对象时,在同一行使用autolease,而不是在同一个方法的后面语句中使用一个单
独的release。

不要调用NSObject类的类方法new,也不要在子类重写。相反,你应该使用alloc和init方法来
创建并初始化一个对象。



原文链接: https://www.cnblogs.com/GnagWang/archive/2011/09/29/2195772.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    Object-c 一些代码规范

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/33317

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午10:27
下一篇 2023年2月8日 上午10:28

相关推荐