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

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

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

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

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

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

ringa_lee
ringa_lee

ringa_lee

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

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

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

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!