学习swift的时候看到一些关于函数的命名规范和使用的疑惑。
比如下面这个函数,它是首字母大写的,同时它是定义在类外部的。
let data = UIImagePNGRepresentation(image)
这种写在类外面的函数叫做什么函数呢?
什么时候需要写在类外面呢?
为什么它是首字母大写呢?
大家讲道理2017-04-17 17:41:31
這種才是函數,類別裡面的叫做方法method。這是c函數,c沒類型所以他只能這麼寫。首字母大寫是規範,他是UIKit下的一個函數,所以前面有UI。
迷茫2017-04-17 17:41:31
一般稱 Class 內部的為 Method,也就是方法;而外部的成為 Function,也就是函數。
當你寫在外面時,這個函數在呼叫時是不需要透過 Class 或 Class 的實例去掉用的。
首字母大寫的原因是因為,Apple 的古老傳統。因為在 Objective-C 時代是沒有命名空間一說的,所以很多情況下會出現名稱衝突。所以 Cocoa 框架中的 Class 都是有前綴的,像是 NS、UI 等等(舉個簡單例子:UIImage 與 CGImage 如果沒有前綴的話,你可以想像一下)。而 Apple 約定前綴均為大寫形式,故如此。
PHP中文网2017-04-17 17:41:31
一般稱 Class 內部的為 Method,也就是方法;而外部的成為 Function,也就是函數。
當你寫在外面時,這個函數在呼叫時是不需要透過 Class 或 Class 的實例去掉用的。
首字母大寫的原因是因為,Apple 的古老傳統。因為在 Objective-C 時代是沒有命名空間一說的,所以很多情況下會出現名稱衝突。所以 Cocoa 框架中的 Class 都是有前綴的,像是 NS、UI 等等(舉個簡單例子:UIImage 與 CGImage 如果沒有前綴的話,你可以想像一下)。而 Apple 約定前綴均為大寫形式,故如此。
阿神2017-04-17 17:41:31
public func after_delay(time:NSTimeInterval,block: dispatch_block_t){
let time_uint64:UInt64 = UInt64(time)
let delay = dispatch_time(DISPATCH_TIME_NOW. _get_main_queue(), block)
}
就比如這樣,你也可以自己寫成這樣的函數,你調用的時候用就不需要用類或者結構體枚舉等之類的來調用,可以直接使用
after_delay(1, block: { () -> Void in
alert(notice, dismiss: false)
})