首頁  >  問答  >  主體

ios - swift函数的一些疑惑

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

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

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

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

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

ringa_leeringa_lee2717 天前281

全部回覆(5)我來回復

  • 大家讲道理

    大家讲道理2017-04-17 17:41:31

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

    回覆
    0
  • 迷茫

    迷茫2017-04-17 17:41:31

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

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

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

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 17:41:31

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

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

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

    回覆
    0
  • 阿神

    阿神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)
     })

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:41:31

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

    回覆
    0
  • 取消回覆