【问题标题】:iPhone SDK function/method with arguments带参数的 iPhone SDK 函数/方法
【发布时间】:2010-12-21 18:30:25
【问题描述】:

我正在创建一个应用程序,我在其中多次执行相同的操作。我要尽可能少的代码,我不想重复自己。

我需要一个可重用函数的 PHP 等效项,我在其中设置一个输入,该函数将返回输出。

该应用程序是一个 URL 缩短器,因此您可能假设输入是 URL,输出是短 URL。

解决此问题的最佳方法是什么?我知道我可以编写两次相同的代码,但我讨厌重复自己。

希望我能表达我的意思。任何帮助是极大的赞赏。 -贾尔斯

【问题讨论】:

标签: iphone objective-c function methods


【解决方案1】:

抱歉,如果我过度简化了您的问题,但您是在问如何定义 Objective-C 方法吗?如果是这样,您将不得不学习Objective-C,这是没有办法的:

The Objective-C Programming Language - Object Messaging

在 iPhone 和 Mac 平台上,您可以在不编写代码的情况下完成很多伟大的事情,但很难想象不编写一些代码来完成任何有用的应用程序。

示例

- (float)multiplyThisFloatByTwoPointFive:(float)numberToMultiply
{
     return numberToMultiply * 2.5;
}

称呼它:

[self multiplyThisFloatByTwoPointFive:3.7];

如果你的意思是“我想把这些非类特定的方法放在我可以普遍访问它们的地方”,例如,一个库,你可以通过两种方式做到这一点:

  1. 创建某种“库”类,例如“MySpecialMathClass”(不要与“我的特殊教育数学课”混淆)或“MyAppAnimationTricks”,并将您的方法放在那里(您可以将它们定义为 +someMethod: not - someMethod:, class- not instance-method, per Objective-C)。
  2. 如果它们只处理原语(例如 int、float、double ...),请考虑将它们设为 C 函数,而不是 Objective-C 方法。

【讨论】:

  • 好吧,从技术上讲,没有什么能阻止他将 C 函数与 Objective-c 对象一起使用,只是似乎它通常会被不赞成。我可能会把它放在某个地方的单例类中(应用程序委托?),或者作为你提到的类的静态方法。
  • 技术上不仅没有什么能阻止他,而且很常见。我很好奇为什么有人会对此不屑一顾——Objective-C 是 C 的超集。我提到 C 函数用于 C 原始例程,因为如果非常频繁地调用,你会获得一些的速度放弃 Obj-C 消息调度开销。在高吞吐量计算中,这可以产生巨大的差异。当然,首先测量。 :-)
【解决方案2】:

我在这方面几乎是个新手,但你当然可以在 Objective C 中编写函数(而不是方法)。

我最近写了几个实用函数。我创建了一个 NSObject 文件来放置它们,但它没有声明 ivars 或方法,只有函数。然后在 .m 文件中实现函数,并将 .h 文件导入到您想要函数的任何类文件中。显然,您可以从任何已导入函数文件的 .m 文件中的任何位置调用它们。

约翰·多纳

【讨论】:

  • 代码示例在哪里;(这只是很好的回答:“是的,你可以。”
猜你喜欢
  • 1970-01-01
  • 2011-07-09
  • 2011-07-05
  • 1970-01-01
  • 2018-02-05
  • 2015-07-29
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
相关资源
最近更新 更多