如果您詢問有關文檔,我建議您查看Jazzy,這是一種從內聯代碼註釋構建文檔的工具。從代碼註釋中構建獨立文檔是非常好的方式,並且符合Apple的慣例。
使用的基本約定如下。讓我們想象一下,你有一些類定義如下所示:
/// Some incredibly useful class
public class MyClass {
/// Performs some foo-like operation
///
/// - Parameter bar: The bar parameter.
public class func foo(_ bar: String) {
// do something
}
/// Some bazzy operation
///
/// - Parameter qux: The bar parameter.
public func baz(_ quz: String) {
// do something
}
}
爵士將產生的文件看起來像:
注意,它只是顯示你的參數標籤。如果你在一個水龍頭,它表明你是否是一個類型的方法,什麼參數名:
在原來的問題,目前還不清楚你在談論的文件,所以我討論了在代碼中遇到的約定。答案如下。
在Swift中,實例和屬性類型都是.
。
這只不過是.
之前的問題。如果它是一個類型,它是一個類型屬性/方法。試想一下:
let b = Foo.bar
這是引用類型屬性bar
爲Foo
類型。但是如果.
的前面是一個類型的實例,那麼你正在處理一個實例屬性/方法。試想一下:
let b = Baz()
let q = baz.qux
在這種情況下,qux
所引用的Baz
實例屬性,因爲b
的Baz
類型的實例。
在混濁問題的風險,告誡到上面的圖案是用在雨燕「選擇」(舊的Objective-C的圖案)。在這種情況下,target
的選擇指示selector
引用的內容。如果您提供target
的實例,則selector
正在引用實例方法。如果您提供target
的類型,則selector
正在引用一種類型方法。因此,在這個例子中,selector
所引用的實例方法:
Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.foo), userInfo: nil, repeats: false)
而下面將調用類型的方法:
Timer.scheduledTimer(timeInterval: 1, target: ViewController.self, selector: #selector(ViewController.foo), userInfo: nil, repeats: false)
注意,在這兩個的這兩個例子,如果我們在同一個班級內進行互動,我們通常會完全忽略班級名稱。如果它在另一個類中,則只需顯式引用該類型。但是我僅僅包含這個target
/selector
模式,因爲它確實顯示了另一種略有不同的語法使用。
但是這個例外是獨一無二的。一般模式是xxx.yyy
,如果xxx
是某種類型的實例,則yyy
是一個實例屬性/方法,而如果xxx
是某種類型的名稱,則yyy
是一個類型屬性/方法。
的append(_ newElement:)
爲append(_:)
的引用是完全不同的事情。這只是第一個參數newElement
沒有外部標籤的情況,所以它被稱爲沒有標籤,例如, array.append(object)
。因此append(_:)
只是一個表示它如何被調用的表示法(我們不關心內部參數名稱是什麼),但append(_ newElement:)
是它的實現方式(我們希望知道如何在該方法內引用此參數) 。
好了,這不是我一直在尋找的答案,但感謝你的課呢。 :-)我想知道用於文檔目的的符號。我更新了我的問題,使其更加清晰。 – ma11hew28