- 博客(72)
- 收藏
- 关注
原创 二十四、响应式编程
import UIKitimport RxSwiftimport RxCocoa//7.拓展Binder属性extension Reactive where Base: UIView { var hidden: Binder<Bool> { return Binder<Bool>(base) { button, value in button.isHidden = value } } }c...
2020-10-16 10:24:47
268
原创 二十二、函数式编程
//1.Array的常见操作var arr = [1, 2, 3, 4]var arr2 = arr.map { //map映射// i in// return 2 * i $0 * 2 // $0数组元素}print(arr2) //[2, 4, 6, 8]var arr6 = arr.map { "abc_\($0)" } //$0数组元素print(arr6) //["abc_1", "abc_2", "abc_3", "abc_4"]var arr3 = a...
2020-10-16 10:24:38
165
原创 二十一、从OC到swift
//1.MARK、TODO、FIXME //MARK: 类似于OC的#pragma mark //MARK: - 类似于OC的#pragma mark - //TODO: 用于标记未完成的任务 //FIXME: 用于标记待修复的问题 class Person1 {} func test() -> Person1{ //TODO: 未完成 //或者...
2020-10-16 10:24:21
215
原创 二十三、面向协议编程
/*1.面向协议编程面向协议编程Protocol Oriented Programming,POP是swift的一种编程范式,Apple于2015年WWDC提出,在swift的标准库中,能见到大量POP的影子。同时,swift也是一门面向对象的编程语言Object Oriented Programming,OOP,在swift开发中,OOP和POP是相辅相成的,任何一方并不能取代另一方,POP能弥补OOP设计上的不足.2.回顾OOPOOP的三大特性:封装、继承、多态。继承的经典使用场合:...
2020-10-16 10:24:02
309
原创 二十、字面量
//1.字面量,10,false,"Jack"都是字面量//swift自带的绝大部分类型,都支持直接通过字面量进行初始化:Bool,Int,Float,Double,String,Array,Dictionary,Set,Optional等var age = 10var isRed = falsevar name = "Jack"//常见字面量的默认类型//public typealias IntegerLiteralType = Int//public typealias FloatLite
2020-10-15 00:05:16
143
原创 十九、内存管理
/*1.内存管理跟OC一样,swift也是采取基于引用计数的ARC内存管理方案(针对堆空间)swift的ARC中有3种引用:a.强引用:默认情况下,引用都是强引用b.弱引用:通过weak定义弱引用,必须是可选类型的var,因为示例销毁后,ARC会自动将弱引用设置为nil,ARC自动给弱引用设置为nil时,不会触发属性观察器c.无主引用,通过unowned定义无主引用。不会产生强引用,实例销毁后仍然存储着实例的内存地址(类似OC中的unsafe_unretained)试图在实例...
2020-10-15 00:05:03
130
原创 十八、访问控制
/*1.访问控制在访问权限控制这一块,swift提供了5个不同的访问级别,以下是从高到低排列,实体指被访问级别修饰的内容open:允许在定义实体的模块、其他模块中访问,允许其他模块进行继承、重写(open只能用在类、类成员上)public:允许在定义实体的模块、其他模块中访问,不允许其他模块进行继承、重写internal:只允许在定义实体的模块中访问,不允许在其他模块中访问fileprivate:只允许在定义实体的源文件中访问private:只允许在定义实体的封闭声明中访问绝...
2020-10-15 00:04:50
164
原创 十七、拓展
/*swift的扩展有点儿类似于OC的分类扩展可以分为枚举、结构体、类、协议添加功能,可以添加方法、计算属性、下标、(便捷)初始化器、嵌套类型、协议等等.扩展不能办到的事情:不能覆盖原有的功能、不能添加存储属性,不能向已有的属性添加属性观察器,不能添加父类、不能添加指定初始化器,不能添加反初始化器*///1.计算属性、下标、方法、嵌套类型var arr: Array<Int> = [10, 20, 30]extension Array { subscript(nul...
2020-10-15 00:04:26
99
原创 十六、高级运算符
/*1.溢出运算符:&+、&-、&*用来支持溢出运算swift的算术运算符出现溢出时会抛出运行时错误*/var min = UInt8.minprint(min &- 1) //255var max = UInt8.maxprint(max &+ 1) //0print(max &* 2) //255 * 2 - 256 = 254//2.运算符重载struct Point { var x = 0, y = 0 st...
2020-10-15 00:04:03
387
原创 十五、泛型
//1.泛型:泛型可以将类型参数化,提高代码复用率,减少代码量func swapValues<T>(_ a: inout T, _ b: inout T) { (a, b) = (b, a)}var i1 = 10var i2 = 20swapValues(&i1, &i2)var d1 = 10.0var d2 = 20.0swapValues(&d1, &d2)struct Date { var year = 0, month...
2020-10-15 00:03:43
143
原创 十四、错误处理
class Person { static var age = 0 static func run() {}}Person.age = 10Person.run()//等价汇编代码也是一样的Person.self.age = 10Person.self.run()//四个等价汇编代码也是一样的var p0 = Person() //init()var p1 = Person.self() //init()var p2 = Person.init() //init()v...
2020-10-15 00:03:31
155
原创 十三、协议
//1.协议/*协议可以用来定义方法、属性、下标的声明,协议可以被枚举、结构体、类遵守,多个协议之间欧诺个逗号隔开协议中定义方法时不能有默认参数值,默认情况下,协议中定义的内容必须全部实现,也有办法办到只实现部分内容。协议定义get、set,用var存储属性或get、set计算属性去实现*/protocol Drawable { func draw() var x: Int { get set } //协议中定义属性时必须用var关键字 var y: Int {...
2020-10-15 00:02:33
189
原创 十二、可选链
class Car { var price = 0 }class Dog { var weight = 0 }class Person5 { var name: String = "" var dog: Dog = Dog() var car: Car? = Car() func age() -> Int { 18 } func eat() { print("Person eat") } subscript(index: Int) -> Int...
2020-10-15 00:02:08
82
原创 十一、初始化
//1.初始化器/*类、结构体、枚举都可以定义初始化器。类有2种初始化器:指定初始化器、便捷初始化器.每个类至少有一个指定初始化器,指定初始化器是类的主要初始化器,默认初始化器总是类的指定初始化器,类偏向于少量指定初始化器,一个类通常只有一个指定初始化器。初始化器的相互调用规则:123*/class Person { var age: Int init(age: Int) { self.age = age } convenience ini...
2020-10-15 00:01:39
161
原创 十、方法、下标、继承
//1.方法/*枚举、结构体、类都可以定义实例方法、类型方法实例方法:通过实例对象调用,类似OC对象方法类型方法:通过类型调用,用static或者class关键字定义self,在实例方法中代表实例对象,在类型方法中代表类型*/class Car { static var cout = 0 init() { Car.cout += 1 } static func getCount() -> Int { self.cout /* 等价...
2020-10-14 00:53:30
181
原创 九、属性
//1.属性/*swift中跟实例对象相关的属性分为2大类存储属性:类似于成员变量这个概念,存储在实例对象的内存中结构体、类可以定义存储属性枚举不可以定义存储属性计算属性:本质就是方法(函数)不占用实例对象的内存枚举、结构体、类都可以定义计算属性*/struct Circle { var radius: Double //存储属性 var diameter: Double { //计算属性 set { r...
2020-10-14 00:52:08
150
原创 八、闭包
/*1.闭包表达式在swift中可以通过func定义一个函数,也可以通过闭包表达式定义一个函数{ (参数列表) -> 返回值类型 in 函数体代码}*/func sum(_ v1: Int, _ v2: Int) -> Int {v1 + v2}var fn = { //闭包定义函数 (v1: Int, v2: Int) -> Int in return v1 + v2}fn(10, 20)//2.闭包表达式的简写func exe...
2020-10-14 00:51:08
108
原创 七、结构体
//1.结构体//在swift标准库中,绝大多数的公开类型都是结构体,而枚举和类只占很小一部分,比如Bool、Int、Double、String、Array、Dictionary等常见类型都是结构体,所有结构体都有一个编译器自动生成的初始化器(initializer、初始化方法、构造器、构造方法)struct Date { var year: Int //存储属性 var month: Int var day: Int}var date = Date(year: 2020, ...
2020-10-14 00:50:26
175
1
原创 六、可选项
//1.可选项,也叫可选类型,它允许将值设置为nil,在类型名称后面加个问号?来定义一个可选项var name : String? = "Jack"name = nilvar age : Int? //默认就是nilage = 10age = nilvar array = [1, 15, 40, 29]func get(_ index: Int) -> Int? { if index < 0 || index >= array.count { ret...
2020-10-14 00:49:11
475
原创 五、枚举
//1.枚举的基本用法enum Direction0 { case north case south case west case east}//等价于enum Direction1 { case east, west, south, north}var dir = Direction0.westdir = Direction0.eastdir = .southprint(dir)switch dir {case .east: pr...
2020-10-14 00:48:22
143
原创 四、函数
//1.函数的定义,形参默认是let 也只能是let,let省略了func pi() -> Double { return 3.14}pi()func sum0(v1: Int, v2: Int) -> Int { return v1 + v2}print(sum0(v1:1,v2:2))//3个无返回值等价 Void就是空元组public typealias Void = ()func sayHello0() -> Void { print(...
2020-10-14 00:47:29
81
原创 三、流程控制
//if 后的条件可以省略小括号 且条件只能是Bool let age = 4 if age {} 这样是错的let age = 4if (age >= 22) { print("married")} else if age >= 18 { print("being adault")} else if age >= 7 { print("go to school")} else { print("just a child")}//whil...
2020-10-14 00:44:51
138
原创 二、数据类型
let age1: Intage1 = 10let age2: Int = 10let age3 = 10/*常量只能赋值一次它的值并不要求在编译时期确定,但使用之前必须赋值一次*/var num = 10num += 20let age4 = numprint(age4)func getAge() -> Int { return 30}let age5 = getAge()//常量变量在初始化之前,都不能使用//let age : Int...
2020-10-14 00:43:01
111
原创 一、基础语法
一、基础语法Playground view 和 controllerimport UIKitimport PlaygroundSupportlet view = UIView()view.frame = CGRect(x: 0, y: 0, width: 100, height: 100)view.backgroundColor = UIColor.redPlaygroundPage.current.liveView = viewlet imageView = UIImageView
2020-10-14 00:40:01
87
原创 iOS面试题总结2
1.动画了解吗?2.请求序列化?3.APP启动流程的优化?一、APP启动过程什么是镜像?二进制文件.o、动态链接库dylib、资源文件bundle(指正在运行时使用dlopen()加载)1.main()前阶段:加载应用的可执行文件.o、动态链接器dyld、动态链接库dylib。2.main()阶段:dyld调用main()、UIApplicationMain()、applicationWillFinishLaunching、didFinishLaunchingWithOptions
2020-09-29 12:48:11
207
原创 面试题总结1
1.UI视图UITableView的重用机制UITableView的数据源同步解决方案1.并发访问,数据拷贝(主线程标记删除的数据,子线程中删除一次)2.串行访问 子线程数据回来时 同步数据删除UIView和CALayer区别UIView 提供内容 负责处理触摸等事件参与响应链CALayer 负责显示内容contents事件传递机制从父视...
2020-09-29 12:45:37
497
原创 nil和Nil及NULL和NSNull的区别 ?
nil和Nil及NULL和NSNull的区别 ?nil是空对象,Nil是空类,NULL是空指针,NSNull值为空的对象。
2020-08-31 11:06:27
99
原创 APP加急审核
加急审核链接:https://developer.apple.com/contact/app-store/?topic=expedite
2017-12-14 18:00:50
231
原创 XMPP传输层加密,抓包看不到具体消息
self.xmppstream.autoStartTLS = YES;//传输过程中tls加密-(void)xmppStream:(XMPPStream *)sender willSecureWithSettings:(NSMutableDictionary *)settings{ [settings setObject:[NSNumber numberWithBoo
2017-12-06 14:59:24
937
原创 崩溃在main主函数解决方法
http://blog.youkuaiyun.com/deft_mkjing/article/details/53117341- (void)dealloc{ self.sosView.delegate = nil; self.locService.delegate = nil; self.geoCodeSearch.delegate = nil; se
2017-12-06 14:14:21
1489
原创 ios11 UITableView顶部有空隙
先加载视图到界面上再用下边的这句话才管用 if (IOS11_OR_LATER) { self.homeView.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; } else { self.autom
2017-09-27 22:09:41
3524
原创 听筒和扬声器打开方式
//听筒打开 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil]; //扬声器打开 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCatego
2017-08-16 14:46:44
689
原创 点击大头针不弹气泡每次都可以响应点击事件
-(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(HKTPointAnnotation *)routeAnnotation{ pAV.canShowCallout = NO;}-(void)mapView:(BMKMapView *)mapView didS
2017-06-13 15:50:28
886
原创 提交APPStore广告标识如何填,出口合规,内容版权
分2种情况:第一种情况勾选如下:就是在APP内部明显有广告的标志如QQ这种1.在APP内投放广告标识第二种情况:安装或者跳转时出现的一般情况下选第二种就行:(2)检查IDFA的方法:步骤:1、打开终端cd到要检查的文件的根目录。2、执行下列语句:grep -r advertisingIden
2017-06-09 22:52:50
7879
原创 AVCaptureDevice拍照与短视频
UIControlEventTouchDown]; [self.takeButton addTarget:self action:@selector(endAction:) forControlEvents:UIControlEventTouchUpInside];#pragma mark 视频时间少于10s松开发送-(void)endAction:(UIButton *
2017-05-15 16:38:52
9210
原创 微信分享[WXApi sendReq:req]失败原因
在做微信分享时按照文档一步步设置,最后真机调试点击分享却没任何反应。 最后一个方法 微信分享,返回值为NO.[WXApi sendReq:req];后来终于找到了原因,是因为该方法图片设置问题。[message setThumbImage:[UIImage imageNamed:@"res2.png"]];
2017-04-28 21:46:21
16931
原创 NSTimer不能放到子线程中去执行否则定时器里边的方法一次都不会执行,应该把它放到主线程才行
NSTimer不能放到子线程中去执行否则定时器里边的方法一次都不会执行,应该把它放到主线程才行
2017-04-25 16:50:41
1687
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人