2009-11-30 28 views
0

我正在創建一個應用程序,在該應用程序中我多次執行相同的操作。我儘可能少用代碼,我不想重複自己。帶有參數的iPhone SDK函數/方法

我需要一個可重用函數的PHP等價物,其中我設置了一個輸入,並且該函數將返回輸出。

該應用程序是一個URL縮短器,因此您可能會假定輸入是一個URL,輸出是短URL。

這是什麼最好的方法呢?我知道我可以兩次編碼相同的東西,但我討厭重複自己。

希望我得到了我的觀點。任何幫助是極大的讚賞。 -Giles

+0

可能重複http://stackoverflow.com/questions/1658433/accessing-method-from-other-classes-objective-c/ – 2009-11-30 20:09:06

回答

6

道歉,如果我簡化你的問題,但你問如何定義一個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方法。
+0

那麼技術上沒有什麼使用C函數阻止他有了Objective-C對象,它看起來就像它通常會被折磨一樣。我可能會把它放在某個地方的單例類(app delegate?)中,或者像你提到的那樣在類中使用靜態方法。 – 2009-11-30 20:02:04

+0

不僅沒有什麼技術上阻止他,這很常見。我會好奇爲什麼有人會對它不滿 - Objective-C是C的超集。我提到C函數僅適用於C-primitive-only例程,因爲如果非常頻繁地調用,你會獲得某些*速度開溝Obj-C消息調度開銷。在高吞吐量計算中,這可以造成巨大的差異。當然,先量一下。 :-) – 2011-04-24 13:52:19

-1

我幾乎在這一個新手,但你肯定可以寫功能(而不是方法)的目的C.

我最近寫了幾個實用功能。我創建了一個NSObject文件來放置它們,但它沒有聲明ivars或方法,只是函數。然後在.m文件中實現函數,然後將.h文件導入到您想要函數的任何類文件中。您顯然可以在任何導入了函數文件的.m文件中的任何位置調用這些文件。

約翰·多納

+0

代碼示例在哪裏;(這個答案很好:「是的,你可以。」 – 2010-07-15 10:39:41