2017-08-08 67 views
2

當Xcode顯示具有默認參數值的函數/方法提示時,是否有任何規則?爲什麼Xcode不總是顯示一個參數默認值的提示?

這是我的意思。例如,在UIViewControllerpresent()方法,像這樣的簽名:

func present(
    _ viewControllerToPresent: UIViewController, 
    animated flag: Bool, 
    completion: (() -> Void)? = nil 
) 

當我在Xcode中鍵入它的名字,我只是暗示的全部方法聲明,包括completion參數,可以省略:

  1. 本(viewControllerToPresent:UIViewController中,動畫:BOOL,完成:(() - >空隙)?)

然而,讓我們創建present方法的副本:

func presentCopy(
    _ viewControllerToPresent: UIViewController, 
    animated flag: Bool, 
    completion: (() -> Void)? = nil 
) {...} 

這個時候,Xcode的通知方法的大約兩個可能的版本:

  1. presentCopy(viewControllerToPresent:UIViewController中,動畫:BOOL )

  2. presentCopy(viewControllerToPresent:UIViewController中,動畫:BOOL, 完成:(() - >無效))

哪裏這一矛盾從何而來?

+0

他們是內部規則我不認爲你可以改變。你問的原因是什麼?準確性在哪裏? –

+0

我問的原因是因爲我想知道何時可以省略參數,何時不可以查看文檔中的每種方法。不一致的地方在於,它有時會給你一種方法的所有可能的形式,有時甚至是最充分的。 –

+0

據我所知,這隻會發生在迅速和nt目標c。也許是因爲它建立在它之上 –

回答

4

我想這是因爲你在純Swift類中定義了方法,而在Objective-C類中定義了present方法UIViewController

在Objective-C中,沒有默認參數值的概念。

即使情況正好相反。如果在Obj-C類中訪問presentCopy方法,則方法聲明將包含所有值,並且只有一個方法。

+1

這也是我的第一個想法。 –

相關問題