swift闭包

swift语法初识

大憨熊 提交于 2020-02-25 13:02:10
一、 常量和变量   1、 在 swift 中申明变量或者常量的时候可以不用变量或常量类型,因为系统会帮我们自动推导出对应的类型      变量     var a = 10      常量     let b = 20      在 swift 中我们的变量名可以实用表情或者中文表示     var 😏 = 20     var 一哥 = 20     😏 + 一哥     2、 当我们的变量有小数点的时候,会自动推导出 double 类型     var yige: Int = 20     var yijie: Float = 1.8     var erge: String = " 涨价 "     var erjie: Character = " 周 "     swift 不支持隐式转换, 在 OC 中强制转换     yige + Int ( yijie )     3、常用操作     字符串拼接:+     判断两个字符串是否相等:==     4、数据类型的写法      空数组的写法     var array3 = Array < String >()     var array4 = [ String ]()      添加元素     array2 += [ " 何必 " ]     array2 . append ( "123" )    

Swift基础学习笔记

故事扮演 提交于 2020-02-25 13:01:06
1、在学基本语法之前,简单看一下与OC的不同   注释:OC #pragma marks 视图加载完成      Swift //MARK: 视图加载完成          //TOOO:设置背景颜色(Xcode 8.0 特有)        //FIXME:更改头像   创建一个视图View:       OC [[UIView alloc]initWithxxx:]; Swift UIView(xxx:) 类名() == alloc/init 等价   类方法:       OC [UIColor redColor];       Swift UIColor.red       2.0  UIColor.redColor   访问当前对象的属性,Swift可以不使用self.:    OC [self.view addSubview:v];       Swift  view.addSubview(v)       建议:都不用,在编译器提示的时候再添加,会对语境有更好的体会     原因:闭包(类似OC block),需要使用self.   没有";"      ";"目的分割语句的,在Swift中,默认不需要   枚举类型:       OC UIButtonTypeContactAdd Swift ‘.’contactAdd   监听方法     OC @selector

Swift简单入门教程

こ雲淡風輕ζ 提交于 2020-02-25 13:00:42
编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”。在 Swift 中,可以用一行代码实现:   println("hello, world") 如果你写过 C 或者 Objective-C 代码,那你应该很熟悉这种形式——在 Swift 中,这行代码就是一个完整的程序。你不需要为了输入输出或者字符串处理导入一个单独的库。全局作用域中的代码会被自动当做程序的入口点,所以你也不需要main函数。你同样不需要在每个语句结尾写上分号。 注意:为了获得最好的体验,在 Xcode 当中使用代码预览功能。代码预览功能可以让你编辑代码并实时看到运行结果。 简单值 使用let来声明常量,使用var来声明变量。一个常量的值在编译时并不需要获取,但是你只能为它赋值一次。也就是说你可以用常量来表示这样一个值:你只需要决定一次,但是需要使用很多次。 var myVariable = 42 myVariable = 50 let myConstant = 42 常量或者变量的类型必须和你赋给它们的值一样。然而,声明时类型是可选的,声明的同时赋值的话,编译器会自动推断类型。在上面的例子中,编译器推断出myVariable是一个整数(integer)因为它的初始值是整数。 如果初始值没有提供足够的信息(或者没有初始值),那你需要在变量后面声明类型,用冒号分割。 let

简单谈谈OC与Swift的异同

て烟熏妆下的殇ゞ 提交于 2020-02-25 12:59:48
Swift,苹果于2014年 WWDC (苹果开发者大会)发布的新开发语言,可与 Objective-C *共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。 目前已经更新到Swift2.0,即将发布3.0版本.听说有很大的变动呢.现在我们先来了解一下Swift与OC基础的小异同(不过如果要说它与OC有什么不同,感觉很不同啊~~~) 1.输出日志不同 2.常量变量定义不同,swift 类型的长短比OC更精确,swift是类型安全的语言,swift不允许隐式转换,但是可以显示转换 3.运算符:+ , - , * , / ,%, ++,--,OC和swiftch除了取模运算符,其他用法都一样,OC取模必须是整数,swift取模可以是小数,swift不可以连续赋值,但是OC可以 4.分支 @1 1)、if后的括号可以省略 2)、if后只能接bool值 3)、if后的大括号不能省略 @2 swift和OC的循环差不多,但是swift,for后括号可以省略 @3 1)while循环:while后的括号可以省略,只能是bool值作为条件语句 2)OC中有do-while,swift中do是用来捕获异常的,swift里用repeat-while 4.swift里有元组,OC木有 5.swift的nil和OC有些不一样,OC只有对象可以用nil,swift基础类型(整形

Swift-自定制带有特殊按钮TabBar

混江龙づ霸主 提交于 2020-02-25 12:24:41
---恢复内容开始--- 封装了一个带有中间凸起的自定制Tabbar,包含4个普通按钮和中间的一个凸起按钮- 首先封装了一个UIButton,重新设置了UIButton的图片位置和label位置 使用便利构造器创建了一个带有imageview的构造方法,用来构造中间特殊的按钮 继承与UIView创建了一个自定制tabbar类,大小为屏幕宽度和49 高, 动态创建5个自定制的UIButton,对中间的按钮做了特殊处理,其中的位置大小可以根据需求设置。 设置一个全局的button存储高亮状态下的按钮 使用闭包进行了控制器于自定制tabbar之间的传值,实现了不同按钮切换不同界面的功能 使用方法: 实例化一个自定制TabBar let myTabbar = ZYF_Main_MyTabBar() 设置自定制TabBar的frame myTabbar.frame = CGRectMake(0, height - 49, width, 49) 调用方法,传入参数:标题数组、.Normal状态下的图片数组、.selected状态下的图片数组,每个按钮之间的间距 tabbar.creatTabBar(title, imageNames: imageName, selectedImageNames: selectedImage, space: 83) Github地址 上代码 封装UIButton

Swift Tips - Array 类型

我与影子孤独终老i 提交于 2020-02-25 12:08:10
在开发中,数组这个概念我们应该很熟悉了,Objective-C 中为我们提供了 NSArray 作为数组的实现。大家应该对很熟悉了。而在 Swift 中,为我们提供了它自己对于数组的实现,也是这里我们要介绍的,就是 Array 类。 Array 的官方文档可以参看这里: SwiftStandardLibraryReference 废话不多说,下面就开始我们的主题啦。 <!-- more --> 创建数组 我们要使用一个数组,首先要做的就是创建它, Array 类为我们提供了几种方式来创建: var emptyArray = Array<Int>() 我们这里声明了一个空的数组,数组的元素是 Int 类型,我们还可以这样初始化数组: var equivalentEmptyArray = [Int]() 这样的写法和前面那个的效果是一样的。我们还可以这样进行初始化: let numericArray = Array(count: 4, repeatedValue: 5) // 数组元素为 [5,5,5,5] 这个初始化方法,里面使用 4 个数字 5 来填充这个数组,并且数组元素的类型为 Int 。 访问数组的元素 我们的数组创建完成后,我们就可以通过下标来引用它里面的元素了: var weekdays = ["monday","tuesday","wednesday",

iOS Swift的一些小知识(不断补充)

半城伤御伤魂 提交于 2020-02-04 19:32:38
1 . 在swift文件里是不能写c语言函数的,不兼容c,直接报错。想调用c语言函数,就要利用系统提供的桥接功能,就如同swfit中调用oc一样! 2 .swift 2.0后提供了@convention(c) 用来把 swift的闭包函数转化成c语言指针。下面这种情况就会用到这个特性, 我们在c语言文件里,定义了一个函数: CGFloat myCFunction(CGFloat (callback)(CGFloat x, CGFloat y)) { return callback(1.1, 2.2); } 这里的callback函数是一个c语言函数指针,我们在swift里可以这样使用: let swiftCallback : @convention(c) (CGFloat, CGFloat) -> CGFloat = { (x, y) -> CGFloat in return x + y } let result = myCFunction( swiftCallback ) 也有如下的简化的方法: let result = myCFunction( { (x, y) -> CGFloat in return x + y } ) 3. 如何在老的oc项目中,引入swift代码内容 http://jrjian.github.io/2016/03/10/embed-swift-to-oc

浅谈swift中的内存管理

痞子三分冷 提交于 2020-01-28 13:31:06
Swift使用自动引用计数(ARC(Automatic Reference Count))来管理应用程序的内存使用。这表示内存管理已经是Swift的一部分,在大多数情况下,你并不需要考虑内存的管理。当实例并不再被需要时,ARC会自动释放这些实例所使用的内存。 内存管理 :针对的是实例的内存占用的管理(放在堆里面) 实例:1:由class类型构建的实例,2:闭包对象 下面我们来写一个实例来证明一下 class Person { var name: String init(name: String ) { self.name = name } //类被销毁时,会调用这个方法 deinit { print("\(name) person deinit") } } // var p: Person? = Person(name: "张三") p = nil//"张三" person deinit 当一个事例化的对象被赋予nil的话,会调用的 deinit(),代表着这个对象被销毁 class Person { var name: String init(name: String ) { self.name = name } //类被销毁时,会调用这个方法 deinit { print("\(name) person deinit") } } // var p: Person? =

SWIFT 懒加载

谁都会走 提交于 2020-01-14 02:18:09
import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { self.window = UIWindow(frame: UIScreen.mainScreen().bounds) // Override point for customization after application launch. self.window!.backgroundColor = UIColor.whiteColor() self.window!.rootViewController = RootViewController() self.window!.makeKeyAndVisible() return true } } import UIKit class RootViewController: UIViewController { // 懒加载(只调用一次) /** * 注意:1

swift 懒加载

一曲冷凌霜 提交于 2020-01-14 02:17:08
在做oc项目中经常使用的就是懒加载,重写getter方法, 什么时候用到getter方法什么时候去加载, 并且就加载一次,保证项目的效率 那么swift也有懒加载这么一说,而且apple 很推荐我们使用懒加载, 并且还有一个关键字lazy 懒加载定义: var 变量名: 类型 = 闭包() 看一下下面的事例 // 第一种 lazy var button: UIButton = {() -> UIButton in print("button") return UIButton() }() // 第一中 简写(推荐) lazy var button2: UIButton = { print("button2") return UIButton() }() // 第二种 let bfunc = {() -> UIButton in print("bfunc") return UIButton() } lazy var button3: UIButton = self.bfunc() 来源: https://www.cnblogs.com/MrTao/p/5303926.html