Heim  >  Fragen und Antworten  >  Hauptteil

ios - swift函数的一些疑惑

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

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

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

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

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

ringa_leeringa_lee2765 Tage vor311

Antworte allen(5)Ich werde antworten

  • 大家讲道理

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

    这种才是函数,类里面的叫做方法method。这是c函数,c没类型所以他只能这么写。首字母大写是规范,他是UIKit下的一个函数,所以前面有UI。

    Antwort
    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 约定前缀均为大写形式,故如此。

    Antwort
    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 约定前缀均为大写形式,故如此。

    Antwort
    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, Int64(time_uint64 * NSEC_PER_SEC))
    dispatch_after(delay, dispatch_get_main_queue(), block)
    }
    就比如这样,你也可以自己写成这样的函数,你调用的时候用就不需要用类或者结构体枚举等之类的来调用,可以直接使用

     after_delay(1, block: { () -> Void in
         alert(notice, dismiss: false)
     })

    Antwort
    0
  • 天蓬老师

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

    UIImagePNGRepresentation()这个就是C函数。OC是可以编译C语言的。这个函数定义在UIKit框架中。

    Antwort
    0
  • StornierenAntwort