自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 224

原创 二十二、函数式编程

//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 132

原创 二十一、从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 150

原创 二十三、面向协议编程

/*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 243

原创 二十、字面量

//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 105

原创 十九、内存管理

/*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 102

原创 十八、访问控制

/*1.访问控制在访问权限控制这一块,swift提供了5个不同的访问级别,以下是从高到低排列,实体指被访问级别修饰的内容open:允许在定义实体的模块、其他模块中访问,允许其他模块进行继承、重写(open只能用在类、类成员上)public:允许在定义实体的模块、其他模块中访问,不允许其他模块进行继承、重写internal:只允许在定义实体的模块中访问,不允许在其他模块中访问fileprivate:只允许在定义实体的源文件中访问private:只允许在定义实体的封闭声明中访问绝...

2020-10-15 00:04:50 127

原创 十七、拓展

/*swift的扩展有点儿类似于OC的分类扩展可以分为枚举、结构体、类、协议添加功能,可以添加方法、计算属性、下标、(便捷)初始化器、嵌套类型、协议等等.扩展不能办到的事情:不能覆盖原有的功能、不能添加存储属性,不能向已有的属性添加属性观察器,不能添加父类、不能添加指定初始化器,不能添加反初始化器*///1.计算属性、下标、方法、嵌套类型var arr: Array<Int> = [10, 20, 30]extension Array { subscript(nul...

2020-10-15 00:04:26 67

原创 十六、高级运算符

/*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 304

原创 十五、泛型

//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 83

原创 十四、错误处理

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 119

原创 十三、协议

//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 153

原创 十二、可选链

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 58

原创 十一、初始化

//1.初始化器/*类、结构体、枚举都可以定义初始化器。类有2种初始化器:指定初始化器、便捷初始化器.每个类至少有一个指定初始化器,指定初始化器是类的主要初始化器,默认初始化器总是类的指定初始化器,类偏向于少量指定初始化器,一个类通常只有一个指定初始化器。初始化器的相互调用规则:123*/class Person { var age: Int init(age: Int) { self.age = age } convenience ini...

2020-10-15 00:01:39 129

原创 十、方法、下标、继承

//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 130

原创 九、属性

//1.属性/*swift中跟实例对象相关的属性分为2大类存储属性:类似于成员变量这个概念,存储在实例对象的内存中结构体、类可以定义存储属性枚举不可以定义存储属性计算属性:本质就是方法(函数)不占用实例对象的内存枚举、结构体、类都可以定义计算属性*/struct Circle { var radius: Double //存储属性 var diameter: Double { //计算属性 set { r...

2020-10-14 00:52:08 114

原创 八、闭包

/*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 77

原创 七、结构体

//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 121 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 418

原创 五、枚举

//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 112

原创 四、函数

//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 58

原创 三、流程控制

//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 105

原创 二、数据类型

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 85

原创 一、基础语法

一、基础语法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 49

原创 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 159

原创 面试题总结1

1.UI视图UITableView的重用机制UITableView的数据源同步解决方案1.并发访问,数据拷贝(主线程标记删除的数据,子线程中删除一次)2.串行访问 子线程数据回来时 同步数据删除UIView和CALayer区别UIView 提供内容 负责处理触摸等事件参与响应链CALayer 负责显示内容contents事件传递机制从父视...

2020-09-29 12:45:37 451

原创 nil和Nil及NULL和NSNull的区别 ?

nil和Nil及NULL和NSNull的区别 ?nil是空对象,Nil是空类,NULL是空指针,NSNull值为空的对象。

2020-08-31 11:06:27 67

转载 ios高级-控制器的生命周期

https://www.jianshu.com/p/d60b388b19f5

2018-10-19 21:22:52 666

转载 Achive后 没有ios apps 只有other items

https://www.jianshu.com/p/c3dda3489a24

2018-07-04 10:44:25 466

转载 CoreData创建托管对象子类后,编译文件重复错误

https://www.jianshu.com/p/8dd276722151

2018-05-03 20:23:52 121

原创 APP加急审核

加急审核链接:https://developer.apple.com/contact/app-store/?topic=expedite

2017-12-14 18:00:50 198

原创 XMPP传输层加密,抓包看不到具体消息

self.xmppstream.autoStartTLS = YES;//传输过程中tls加密-(void)xmppStream:(XMPPStream *)sender willSecureWithSettings:(NSMutableDictionary *)settings{    [settings setObject:[NSNumber numberWithBoo

2017-12-06 14:59:24 897

原创 崩溃在main主函数解决方法

http://blog.csdn.net/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 1420

原创 ios11 UITableView顶部有空隙

先加载视图到界面上再用下边的这句话才管用    if (IOS11_OR_LATER) {        self.homeView.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;    }    else    {        self.autom

2017-09-27 22:09:41 3451

原创 听筒和扬声器打开方式

//听筒打开        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];    //扬声器打开        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCatego

2017-08-16 14:46:44 634

原创 点击大头针不弹气泡每次都可以响应点击事件

-(BMKAnnotationView *)mapView:(BMKMapView *)mapView            viewForAnnotation:(HKTPointAnnotation *)routeAnnotation{ pAV.canShowCallout = NO;}-(void)mapView:(BMKMapView *)mapView didS

2017-06-13 15:50:28 851

原创 提交APPStore广告标识如何填,出口合规,内容版权

分2种情况:第一种情况勾选如下:就是在APP内部明显有广告的标志如QQ这种1.在APP内投放广告标识第二种情况:安装或者跳转时出现的一般情况下选第二种就行:(2)检查IDFA的方法:步骤:1、打开终端cd到要检查的文件的根目录。2、执行下列语句:grep -r advertisingIden

2017-06-09 22:52:50 7811

原创 AVCaptureDevice拍照与短视频

UIControlEventTouchDown];    [self.takeButton addTarget:self action:@selector(endAction:) forControlEvents:UIControlEventTouchUpInside];#pragma mark 视频时间少于10s松开发送-(void)endAction:(UIButton *

2017-05-15 16:38:52 6187

原创 微信分享[WXApi sendReq:req]失败原因

在做微信分享时按照文档一步步设置,最后真机调试点击分享却没任何反应。 最后一个方法 微信分享,返回值为NO.[WXApi sendReq:req];后来终于找到了原因,是因为该方法图片设置问题。[message setThumbImage:[UIImage imageNamed:@"res2.png"]];

2017-04-28 21:46:21 16729

原创 NSTimer不能放到子线程中去执行否则定时器里边的方法一次都不会执行,应该把它放到主线程才行

NSTimer不能放到子线程中去执行否则定时器里边的方法一次都不会执行,应该把它放到主线程才行

2017-04-25 16:50:41 1622 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除