我应该使用C函数还是Obj-C方法?

Dan*_*ger 1 iphone cocoa objective-c

我即将创建一个将两个NSDateComponent添加到一起的函数,将它放入C样式函数还是应该用于Obj-C方法有什么好处?

有没有理由使用一个而不是另一个或者我应该总是坚持使用Obj-C?

顺便说一下:并不是说它确实有所不同,但这适用于iPhone上的应用程序

非常感谢

Pet*_*sey 8

在Objective-C中,正确的术语不是"在对象上调用方法",而是"向对象发送消息".

这使决策变得容易:您是否向对象发送消息?你是在告诉它做某事还是要求它提供信息?如果是,则通过将代码放入方法中使对象响应该消息.如果不是(如果任务独立于任何对象),则使其成为一个函数.

您可以浏览Foundation函数,UIKit函数AppKit函数列表,以获取使某些东西属于函数而不是方法的对象独立性的示例.

我即将创建一个将NSDateComponents添加到一起的函数将这个函数放入C风格函数还是应该用于Obj-C方法?

我会把它放到一个分类到NSDateComponents上的实例方法中.呼叫(消息)看起来像[componentsA componentsByAddingComponents_PRH:componentsB].(请注意,我添加了我的首字母缩写,以便如果Apple添加了componentsByAddingComponents:自己的方法,当用户将其设备升级到新操作系统时,我的应用程序的行为不会突然改变.)

一个现有的例子是NSDecimalNumber的decimalNumberByAdding:方法.

  • +1"发送消息到"(真正非常重要的区别!)以及如何不一定最好作为一种方法(至少在一种调度语言中). (2认同)