• Objectc 一些代码规范


    点引用是地道的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方法来 创建并初始化一个对象。



  • 相关阅读:
    Math对象
    MDN中的对象原型
    构造函数的静态成员和实例成员
    js对象的九大特点
    对象数据的使用方法
    创建对象的所有方式
    Linux下gcc编译器的使用
    Linux vim环境设置
    Linux下is not in the sudoers file解决方法
    mySQL相关函数的使用
  • 原文地址:https://www.cnblogs.com/GnagWang/p/2195772.html
Copyright © 2020-2023  润新知