ios - swift函数的一些疑惑
ringa_lee
ringa_lee 2017-04-17 17:39:31
0
5
308

学习swift的时候看到一些关于函数的命名规范和使用的疑惑。

比如下面这个函数,它是首字母大写的,同时它是定义在类外部的。

let data = UIImagePNGRepresentation(image)
  1. 这种写在类外面的函数叫做什么函数呢?

  2. 什么时候需要写在类外面呢?

  3. 为什么它是首字母大写呢?

ringa_lee
ringa_lee

ringa_lee

全部回覆(5)
大家讲道理

這種才是函數,類別裡面的叫做方法method。這是c函數,c沒類型所以他只能這麼寫。首字母大寫是規範,他是UIKit下的一個函數,所以前面有UI。

迷茫
  1. 一般稱 Class 內部的為 Method,也就是方法;而外部的成為 Function,也就是函數。

  2. 當你寫在外面時,這個函數在呼叫時是不需要透過 Class 或 Class 的實例去掉用的。

  3. 首字母大寫的原因是因為,Apple 的古老傳統。因為在 Objective-C 時代是沒有命名空間一說的,所以很多情況下會出現名稱衝突。所以 Cocoa 框架中的 Class 都是有前綴的,像是 NS、UI 等等(舉個簡單例子:UIImage 與 CGImage 如果沒有前綴的話,你可以想像一下)。而 Apple 約定前綴均為大寫形式,故如此。

洪涛
  1. 一般稱 Class 內部的為 Method,也就是方法;而外部的成為 Function,也就是函數。

  2. 當你寫在外面時,這個函數在呼叫時是不需要透過 Class 或 Class 的實例去掉用的。

  3. 首字母大寫的原因是因為,Apple 的古老傳統。因為在 Objective-C 時代是沒有命名空間一說的,所以很多情況下會出現名稱衝突。所以 Cocoa 框架中的 Class 都是有前綴的,像是 NS、UI 等等(舉個簡單例子:UIImage 與 CGImage 如果沒有前綴的話,你可以想像一下)。而 Apple 約定前綴均為大寫形式,故如此。

阿神

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)
 })
Peter_Zhu

UIImagePNGRepresentation()這個就是C函數。 OC是可以編譯C語言的。這個函數定義在UIKit框架中。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!