
Swift
cym_bj
相信你能你就无所不能
展开
-
iOS —— use_frameworks! 作用
通过cocoapods管理应用程序时,在Podfile文件中,**use_frameworks!*cocoapods会生成对应的 frameworks 文件 在Link Binary With Libraries:会生成Pods_工程名.framework,包含了其它用cocoapods导入的第三方框架的.framework文件1、纯OC项目中,通过cocoapods导入OC库时,一般都不使用use_frameworks!2、纯swift项目中,通过cocoapods导入swift库时,必须使用u...原创 2022-07-12 17:33:07 · 1648 阅读 · 1 评论 -
Swift——指针
Swift中也有专门的指针类型,这些都被定性为"Unsafe"(不安全的)MemoryLayout 获取数据类型占用内存的大小 enum MemoryLayout<T> { static var size: Int { get } // 实际占用的内存大小 static var stride: Int { get } // 分配的内存大小 static var alignment: Int { get } // 内存对齐参数 s.原创 2020-11-27 16:03:43 · 210 阅读 · 0 评论 -
Swift——内存管理
跟OC一样,Swift也是采取基于引用计数的ARC内存管理文案(针对堆空间)Swift的ARC中有3种引用:强引用:默认情况下,引用都是强引用弱引用:通过weak定义弱引用 必须是可选类型的var,因为实例销毁后,ARC会自动将弱引用设置为nil ARC自动给弱引用设置nil时,不会触发属性观察器。无主引用:通过unowned定义无主引用 不会产生强引用,实例销毁后仍然存储着实例的内存地址(类似于O...原创 2020-11-27 10:30:12 · 227 阅读 · 0 评论 -
Swift——闭包(Closure)
一、闭包表达式二、尾随闭包三、闭包四、自动闭包原创 2020-11-26 10:57:41 · 417 阅读 · 0 评论 -
Objc-Swift混编(更新中)
一、OC项目1、当我们在 ObjC 项目时,新建 Swift 文件时,Xcode 都会自动帮你新建一个 Objective-C bridging header file(当然我们也可以手动创建)2、Swift中调用OC 我们可以Objective-C bridging header file导入ObjC头文件, 这样我们就能在 Swift 中调用 ObjC 的代码了。3、OC调用Swift 引入 项目名称-Swift.h 头文件即可 ,例如(#import "ObjcDemo-Swift.h")..原创 2020-11-23 11:37:39 · 359 阅读 · 0 评论 -
Swift——继承
值类型(枚举、结构体) 不支持继承、只有类支持继承 。子类可以重写父类的下标、方法、属性,重写必须加上override关键字被final 修饰的方法、下标、属性 ,禁止被重写被final 修饰的类,禁止被继承一、重写属性1、子类可以将父类的属性(存储、计算)重写为计算属性2、子类不可以将父类属性重写为存储属性3、只能重写var属性,不能重写let属性4、重写时,属性名、类型要一致5、子类重写后的属性权限不能小于父类属性的权限 如果父类属性是只读的,那...原创 2020-11-20 17:20:40 · 1019 阅读 · 0 评论 -
Swift ——值类型、引用类型
值类型值类型赋值给var、let 或者函数传参,是直接将所有内容拷贝一份类似于对文件进行copy、paste操作,产生了全新的文件副本,属于深拷贝(deep copy)在Swift标准库中,为了提升性能,String、Array 、Dictionary 、Set采取了Copy On Write的技术比如仅当有『写』操作时,才会真正执行拷贝操作。对于标准库值类型的赋值操作,Swift能确保最佳性能,所有没必要为了保证最佳性能来避免赋值建议:不需要修改的,尽量定义成let...原创 2020-11-20 14:34:09 · 223 阅读 · 0 评论 -
iOS UILabel显示定时器文本的跳动问题
目前大多数用来实现定时器显示的控件都是UILabel,显示验证码计数时出现跳动和闪烁的问题。在iOS9以前系统默认的英文字体是Helvetica, 这种字体每个数字的宽度都是相等的。而在iOS9以后默认的英文字体变为San Fransico字体,这种字体每个数字的宽度是不相等的。正是因为数字宽度的不相等就导致了用UILabel来显示定时器文本时出现文字跳动闪烁的问题。 因此解决的方案就是选用一种等宽数字字体显示即可。为此有两个解决方案:1、使用Helvetica字体代码默认字体。原创 2020-08-26 16:11:20 · 1436 阅读 · 0 评论 -
Swift-循环引用(弱引用(weak reference)和无主引用(unowned reference))
Swift 使用自动引用计数(ARC)机制来跟踪和管理你的应用程序的内存。ARC 会在类的实例不再被使用时,自动释放其占用的内存。如果两个类实例互相持有对方的强引用,因而每个实例都让对方一直存在,就是这种情况。这就是所谓的循环强引用。例:class Person { let name: String init(name: String) { self.name = name } var apartment: Apartment? deinit { print("\(原创 2020-07-20 18:42:14 · 1364 阅读 · 0 评论 -
Swift—— is和 as、 as? 、 as! 区别
is用来判断是否为某种类型 ,as用来做强制类型转换一、 is 判断类型protocol Runnable {func run() }class Persion {}class Student:Persion,Runnable{ func run() { print("跑起来") } func study(){ print("study") }}//判断类型var stu: Any = 10print(stu is In原创 2020-07-17 18:30:28 · 1015 阅读 · 1 评论 -
Swift——方法(实例方法、类型方法)Method
Swift将方法分为两类:实例方法、类型方法使用static或者class关键字定义class Car { static var count = 0 init() { Car.count += 1 } static func getCount() ->Int { count}}let c0 = Car()let c1 = Car()let c2 = Car()print(Car.getCount()) // 3警告:类的存储属性使原创 2020-07-15 20:17:06 · 936 阅读 · 0 评论 -
Swift ——函数下部分(函数重载、函数类型 )
上部分链接原创 2020-07-01 16:01:55 · 450 阅读 · 0 评论 -
swift流程控制语句——for
1、for条件递增循环(注意:这种C语言风格的for循环语法已在Swift3中被废除,从Swift 3开始 ,去除了自增(++)、自减(--)运算符,建议使用下面的for-in)2、闭区间运算符: a...b ,a <= 取值 <= b 包括 a 和 bfor i in 0...3 { print(i)}//i 默认是let ,有需要时可以声明为var...原创 2019-06-25 11:09:35 · 319 阅读 · 0 评论 -
Swift - 关于属性(Property)
1、Swift中类可以使用计算属性,即使用get和set来间接获取/改变其他属性的值class Calumator{ var x:Int = 5; var y:Int = 6; var sum:Int{ get{ return x + y } set(val)...原创 2019-06-16 17:03:00 · 866 阅读 · 0 评论 -
Swift - class与staitc关键字的区别与使用
一、static 关键字1,结构体 struct 和枚举 enum 的静态属性,静态方法使用 static 关键字struct Persion { var name :String = "" var age :Int = 0 static var intersetRate :Double = 10 static func in...原创 2019-06-16 16:28:32 · 338 阅读 · 0 评论 -
Swift ——函数上部分
//1、无返回值的函数func test(name:String){ print(name)}test(name: "哈哈")//2、有返回值的函数func test2(name:String)->Bool{ return true}let isName = test2(name: "哈哈")print(isName)//3、没有形参 多个返回值...原创 2019-06-16 16:10:04 · 355 阅读 · 0 评论 -
Swift——Any和 AnyObject区别
AnyObject 可以代表任何class类型的实例Any 可以表示任意类型,甚至包括方法(func)类型一、AnyObject 。写过Objective-C的朋友会知道在Objective-C中有一个叫做id的类型。编译器不会对向声明的为id的变量进行类型检查,它可以表示任意类的实例。在Cocoa框架中不很多地方都使用了id来进行像参数传递和方法返回这样的工作,这是Objective原创 2017-12-29 17:13:44 · 1550 阅读 · 0 评论 -
Swift——粒子效果
// 1、创建发射器 let emitterLayer=CAEmitterLayer() //2、设置位置 emitterLayer.emitterPosition=CGPoint(x: view.bounds.width*0.5, y: -200); //3、开启三维效果 emi原创 2017-05-03 16:39:20 · 1072 阅读 · 0 评论 -
Swift3.0 /Swift2.3——dispatch_group的使用
在项目开发中有时候需要把一些循环执行的异步操作加入到group中,让彻底循环完之后再进行下一步操作创建一个组//swift2.3:let group = dispatch_group_create()//swift3.0:let group = DispatchGroup()循环加载数据//swift2.3:for _ in array.count { //将当原创 2017-04-04 11:10:13 · 479 阅读 · 0 评论 -
swift基本知识、数据类型、运算符、元组类型
一、swift的基本数据类型 Int、Float、Double、Bool、Character、String(首字母都大写)、Array、Dictionary、元组类型(Tuple)、可选类型(Optional)1、swift严格要求变量在使用之前必须进行初始化// 定义变量var a=5// 定义变量,会自动判断类型(使用时需初始化)var b:Int=6//原创 2015-02-11 21:03:09 · 827 阅读 · 0 评论 -
swift流程控制语句(if、switch)
基于Xocde 11.0 beta (11M336w)一、if 语句let count = 4if count>=3{ print("YES")}else{ print("NO")}二、switch 语句(1)Swift中不需要在case块中显示地使用break跳出switch。如果想要实现C风格的落入特性,可以给需要的case分支插入fallthr...原创 2015-02-11 21:13:36 · 629 阅读 · 0 评论 -
Swift——convenience(便利构造函数)和类方法
import UIKitextension UIButton{ //swit中类方法是以class开头的方法,类似于oc中+开头的方法 class func createButton(imageName:String,bgImageName:String)->UIButton{ let btn=UIButton() b原创 2017-03-17 15:08:58 · 9405 阅读 · 0 评论 -
Swift——解档和归档
1.对用户的模型数据(自定义类:HCUserModel)进行归档和解档1.1 需要遵循NSCoding协议1.2 需要实现funcencode(with aCoder:NSCoder){}归档方法1.3需要实现requiredinit(coder aDecoder:NSCoder){}解档方法import UIKitclass YMUserAccount:NSOb原创 2017-03-22 15:31:32 · 3753 阅读 · 0 评论 -
Swift——(tuples)元组
元组是Swift中特有的,OC中并没有相关类型.它是一种数据类型,常用于方法的返回值//1、使用数组定义let array = ["哈哈",30,1.88] as [Any]//2、使用字典定义let dict=["name":"哈哈","age":30,"height":1.88] as [String : Any]//3、使用元组(一般用于作为方法的返回值)原创 2017-03-16 10:58:07 · 345 阅读 · 0 评论 -
Swift——基本运算
Swift中在进行基本运算时必须保证类型一致,否则会出错。 1、相同类型之间才可以进行运算 2、因为Swift中没有隐式转换。数据类型的转换 1、Int类型转成Double类型:Double(标识符) 2、Double类型转换成Int类型:Int:(标识符)//定义Int avar a = 13//定义Double bvar b = 13原创 2017-03-15 15:05:36 · 581 阅读 · 0 评论 -
Swift——字符串基本使用(Sting)
1、直接遍历字符串var str = "大家好啊"//1、直接遍历字符串for c in str.characters{ print(c) }2、字符串的拼接//2、字符串的拼接var str1="字符串1"var str2 = "字符串2"var str3 = str1+str2print(str3)3、字符串与其它类原创 2017-03-15 16:41:15 · 393 阅读 · 0 评论 -
Swift——数组
一、定义数组// 1、定义数组//定义不可变数组:使用left修饰标识符定义出来的数组就是不可变数组let array=["124","333","3.14"]print(array)//定义可变数组:使用var修饰标识符定义出来的数组就是可变数组.var arrayM=[String]()二、对可变数组的基本操作1、添加元素arrayM.append("哈哈")原创 2017-03-15 17:17:33 · 551 阅读 · 0 评论 -
Swift——字典
一、定义字典 // 不可变字典let dict=["name":"123","age":"13",]// 可变字典var dictM=[String:AnyObject]()二、对可变字典的基本操作1、添加元素// 1、添加元素dictM["name"]="哈哈" as AnyObject?dictM["age"]=18 as AnyObject?dictM[原创 2017-03-16 10:32:58 · 561 阅读 · 0 评论 -
Swift——可选类型Optional
Swift中有规定:对象中的任何属性在创建对象时,都必须有明确的初始化值。注意:强制解包是非常危险操作,如果可选类型为nil,强制解包系统会崩溃建议:在强制解包前,先对可选类型进行判断,判断是否nil可选项,一般也叫可选类型,它允许将值设置为nil.在类型名称 后面加个问号?来定义一个可选项var name: String? = "哈哈"name = nilvar age:...原创 2017-03-16 14:15:35 · 412 阅读 · 0 评论 -
Swift——类的构造函数
class Person:NSObject{ var name:String? var age:Int = 0 override init(){ //在构造函数中,如果没有明确super.init(),那么系统会帮助调用super.init() print("dddd") } //自定义原创 2017-03-16 15:24:44 · 618 阅读 · 0 评论 -
Swift——监听属性的改变属性观察器(Property Observer)
1、在OC中我们可以重写Set方法来监听属性的改变2、Swift中可以通过属性观察者来监听和响应属性值的变化我们通过设置以下观察方法来定义观察者1、willSet:在属性值被存储之前设置,此时新属性值作为一个常量被传入,该参数默认为newValue.我们可以自己定义该参数名。2、didSet:在新属性值被存储后立即调用。与willSet相同,此时传入的属性的旧值,默认参数名为old...原创 2017-03-16 15:50:06 · 3759 阅读 · 0 评论 -
Swift——异常错误处理(throws)
如果在调用系统某一个方法时,该方法最后有一个throws。说明该方法会抛出异常。如果一个方法会抛出异常,那么需要对该异常进行处理。 在Swift 中提供三种处理异常的方式方式一:try 方式程序员手动捕捉异常 (一般不常用)方式二:try?方式 (常用)系统帮助我们处理异常,如果该方法出现了异常,则该方法返回nil.如果没有异常,则返回对应的对象。方式三:tr原创 2017-03-17 11:35:36 · 1189 阅读 · 0 评论