2010-08-20 119 views
1

我已經(在網站上有作者權限)將寫入請求寫入我的核心數據堆棧的包裝類。可選參數

寫它的人說它有「可選參數」,我想知道這是什麼意思。

Anywho,靜態方法被寫成這樣...

+(NSMutableArray *) searchObjectsFromContext 
    : (NSString*) entityName 
    : (NSPredicate*) predicate 
    : (NSString*) sortKey 
    : (BOOL) sortAscending 
    : (NSManagedObjectContext *) managedObjectContext 

我一直在運行,並通過「無」到不需要PARAMS。這是正確的事情嗎?

另外,是否有意義的事實,冒號之間沒有額外的方法文本?

感謝所有幫助

奧利弗

回答

3

如果在閱讀文檔或檢查源代碼時傳遞'nil'是否是正確的事情是不可能的。然而,這可能是正確的,因爲這是大多數課程的標準行爲。

創建沒有關聯文本的方法參數(如您在發佈的代碼中看到的)是完全合法的......但它也非常難看,並且失去了Obj-C冗長的所有好處。絕對沒有理由寫這樣的代碼,它只會讓你的類更難使用。

+0

酷!謝謝! 我認爲這可能只是懶惰,但不知道是否有一個我不知道的重要意義。 – Fogmeister 2010-08-20 15:28:41

+0

不能同意@kubi更多。當你深入Objective-C時,你會發現類似這樣的方法令人反感。而且,這個方法真的不會給你帶來可怕的數量。最後,從核心數據獲取返回一個'NSMutableArray'的事實就是...... ***非常非常錯誤。這是從哪裏來的?我很想看看最初的來源。 – 2010-08-20 16:55:24

+0

我同意最初寫這種方法的人有一些嚴重危險的習慣。我會對使用我不明白的來自該網站的代碼持懷疑態度。 – TechZen 2010-08-21 13:18:19

0

可選參數在VB(和一些其他語言)也有,但不是C#。 C#迫使你重載函數。

如果您願意,您可以將「默認」值傳遞給可選參數。只要你知道這個功能如何響應,我不會看到這會如何傷害任何東西。

編輯:我剛剛讀你的iphone標籤....對不起!我不知道我的回答在這方面與你的相關程度如何

+0

謝謝, 包裝內的函數處理各種變量,取決於它們是否有值我只是不確定術語「可選變量」。 我想他只是意味着你可以通過零而不是實際值。 謝謝! – Fogmeister 2010-08-20 15:13:11

+0

別擔心,我認爲無論如何都是相同的答案。我應該在標題/帖子中提出這個事實。 謝謝 – Fogmeister 2010-08-20 15:16:02