Objective-C是否存在C++的"const方法"的近似值?

Joh*_*ter 2 c++ oop objective-c

想知道在Objective-C中是否存在接近C++的'const方法'的公认惯例.(C/C++背景下的语言新手)

例如:

class Foo {
  public:
     void canChangeMemberVars(void);
     char* asString(void) const;
};
Run Code Online (Sandbox Code Playgroud)

"asString()"得到一个const this指针,所以即使你变得流氓并决定用实例的成员捣乱它也行不通.从文档的角度来看,我发现标签方法作为const非常有用.

我正在编写一个Objective-C类库,并发现自己希望能够使特定的方法成为常量,并想知道是否有任何语言技巧来实现这一点.

总结:

在一天结束时,实现与Mutable和Immutable版本中的因子类类似的功能的唯一方法是什么?在每个方法的注释中做一个简单的注释对我的目的来说不够严格.

Chu*_*uck 8

是的,如果你想拥有一个有时可以变异的类而且有时不能创建类的可变和不可变版本,那么你唯一的选择.你会注意到这就是Apple在Cocoa中的表现(NSArray,NSSet,NSDictionary,NSString等) - 遵循Apple的惯例通常是最好的方法.

Objective-C甚至没有const对象的概念.即使您确实声明了一个对象指针const,也不会阻止您调用设置变量的对象上的方法.