Heim > Fragen und Antworten > Hauptteil
学习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, Int64(time_uint64 * NSEC_PER_SEC))
dispatch_after(delay, dispatch_get_main_queue(), block)
}
就比如这样,你也可以自己写成这样的函数,你调用的时候用就不需要用类或者结构体枚举等之类的来调用,可以直接使用
after_delay(1, block: { () -> Void in
alert(notice, dismiss: false)
})