自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(241)
  • 资源 (7)
  • 收藏
  • 关注

原创 Swift 类型转换

Swift 语言类型转换可以判断实例的类型。也可以用于检测实例类型是否属于其父类或子类的实例。 Swift中类型转换使用 is 和 as 操作符实现,is用于检测值的类型, as 用于转换类型。 类型转换也可以用来检查一个类是否实现了某个协议。一、定义一个类层次以下定义了三个类:Subjects、Chemistry、Maths,Chemistry 和 Maths 继承了 Subjects。 代

2017-09-21 10:40:15 255

原创 Swift 自动引用计数(ARC)

Swift使用自动引用技术(ARC)这一机制来跟踪和管理应用程序的内存。通常情况下我们不需要去手动释放内存,因为ARC会在类的实例不再被使用时,自动释放其占有的内存。 但在有些时候我们还是需要在代码中实现内存管理。一、ARC 功能当每次使用init()方法创建一个类的新的实例的时候,ARC会分配一大块内存用来存储实例的信息。内存中会包含实例的类型信息,以及这个实例所有相关属性的值。当实例不再

2017-09-20 15:41:45 262

原创 Swift 可选链

可选链(Optional Chaining)是一种可以请求和调用属性、方法和子脚本的过程,用于请求或调用的目标可能是nil。 可选链返回两个值:如果目标有值,调用就会成功,返回该值如果目标为nil,调用将返回nil多次请求或调用可以被链接成一个链,如果任意一个节点为nil将导致整条链失效。一、可选链可替代强制解析通过在属性、方法、或下标脚本的可选值后面放一个问号(?),即可定义一个可选链。

2017-09-20 11:17:37 307

原创 Swift 析构过程

在一个类的实例被释放之前,析构函数被立即调用。用关键字deinit来标示析构函数,类似于初始化函数用init来标示。析构函数只适用于类类型。一、析构过程原理Swift会自动释放不再需要的实例以释放资源。 Swift通过自动引用计数(ARC)处理实例的内存管理。 通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理。 例如,如果创建了一个自定义的类来打

2017-09-20 10:59:23 356

原创 Swift 构造过程

构造过程是为了施用某个类、结构体或枚举类型的实例而进行的准备过程。这个过程包含了为实例中的每个属性设置初始值和未其执行必要的准备和初始化任务。 Swift 构造函数使用 init() 方法。 与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,它们的主要任务是保证新实例在第一次使用前完成正确的初始化。 类实例也可以通过定义析构器(deinitializer)在类实例释放

2017-09-18 09:38:37 534

原创 Swift 继承

继承我们可以理解为一个类获取了另外一个类的方法和属性。 当一个类继承其他类时,继承类叫子类,被继承类叫超类(或父类) 在Swift中,类可以调用和访问超类的方法,属性和下标脚本,并且可以重写它们。 我们也可以为类中继承来的属性添加属性观察器。一、基类没有继承其它类的类,称之为基类(Base Class)。 以下实例中我们定义了基类 StudDetails ,描述了学生(stname)及其各科

2017-09-15 13:12:43 216

原创 Swift 下标脚本

下标脚本 可以定义在类(Class)、结构体(structure)和枚举(enumeration)这些目标中,可以认为是访问对象、集合或序列的快捷方式,不需要再调用实例的特定的赋值和访问方法。 举例来说,用下标脚本访问一个数组(Array)实例中的元素可以这样写 someArray[index] ,访问字典(Dictionary)实例中的元素可以这样写 someDictionary[key]。

2017-09-14 16:30:20 275

原创 Swift 方法

Swift 方法是与某些特定类型相关联的函数 在 Objective-C 中,类是唯一能定义方法的类型。但在 Swift 中,你不仅能选择是否要定义一个类/结构体/枚举,还能灵活的在你创建的类型(类/结构体/枚举)上定义方法。一、实例方法在 Swift 语言中,实例方法是属于某个特定类、结构体或者枚举类型实例的方法。 实例方法提供以下方法:可以访问和修改实例属性提供与实例目的相关的功能实例

2017-09-14 14:59:26 280

原创 Swift 属性

Swift 属性将值跟特定的类、结构或枚举关联。 属性可分为存储属性和计算属性: 存储属性 计算属性 存储常量或变量作为实例的一部分 计算(而不是存储)一个值 用于类和结构体 用于类、结构体和枚举存储属性和计算属性通常用于特定类型的实例。 属性也可以直接用于类型本身,这种属性称为类型属性。 另外,还可以定义属性观察器来监控属性值的变化,以此来触发一个自定义的操作。属性观

2017-09-12 16:21:40 371

原创 Swift 类

Swift 类是构建代码所用的一种通用且灵活的构造体。 我们可以为类定义属性(常量、变量)和方法。 与其他编程语言所不同的是,Swift 并不要求你为自定义类去创建独立的接口和实现文件。你所要做的是在一个单一文件中定义一个类,系统会自动生成面向其它代码的外部接口。一、类和结构体对比(1)、Swift 中类和结构体有很多共同点。共同处在于:定义属性用于存储值定义方法用于提供功能定义附属脚本用

2017-09-01 10:55:25 328

原创 Swift 结构体

Swift 结构体是构建代码所用的一种通用且灵活的构造体。 我们可以为结构体定义属性(常量、变量)和添加方法,从而扩展结构体的功能。 与 C 和 Objective C 不同的是:结构体不需要包含实现文件和接口。结构体允许我们创建一个单一文件,且系统会自动生成面向其它代码的外部接口。结构体总是通过被复制的方式在代码中传递,因此它的值是不可修改的。一、语法我们通过关键字 struct 来定义

2017-08-31 18:07:36 262

原创 Swift 枚举

枚举简单的说也是一种数据类型,只不过是这种数据类型只包含自定义的特定数据,它是一组有共同特性的数据的集合。 Swift 的枚举类似于 Objective C 和 C 的结构,枚举的功能为:它声明在类中,可以通过实例化类来访问它的值。枚举也可以定义构造函数(initializers)来提供一个初始成员值;可以在原始的实现基础上扩展它们的功能。可以遵守协议(protocols)来提供标准的功能。

2017-08-31 17:53:48 325

原创 Swift 闭包

闭包(Closures)是自包含的功能代码块,可以在代码中使用或者用来作为参数传值。 Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 匿名函数比较相似。 全局函数和嵌套函数其实就是特殊的闭包。 闭包的形式有: 全局函数 嵌套函数 闭包表达式 有名字但不能捕获任何值。 有名字,也能捕获封闭函数内的值。 无名闭包,使

2017-08-31 17:11:54 392

原创 Swift 函数

Swift 函数用来完成特定任务的独立的代码块。 Swift使用一个统一的语法来表示简单的C语言风格的函数到复杂的Objective-C语言风格的方法。函数声明: 告诉编译器函数的名字,返回类型及参数。函数定义: 提供了函数的实体。Swift 函数包含了参数类型及返回值类型:一、函数定义Swift 定义函数使用关键字 func。 定义函数的时候,可以指定一个或多个输入参数和一个返回值类型。

2017-08-30 14:11:18 453

原创 Swift 字典

Swift 字典用来存储无序的相同类型数据的集合,Swift 字典会强制检测元素的类型,如果类型不同则会报错。 Swift 字典每个值(value)都关联唯一的键(key),键作为字典中的这个值数据的标识符。 和数组中的数据项不同,字典中的数据项并没有具体顺序。 Swift 字典的key没有类型限制可以是整型或字符串,但必须是唯一的。 如果创建一个字典,并赋值给一个变量,则创建的字典就是可以

2017-08-30 13:20:00 526

原创 Swift 数组

Swift数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。 Swift数组会强制检测元素的类型,如果类型不同则会则会报错,Swift数组应该遵循像Array < Element >这样的形式,气宗Element是这个数组中唯一允许存在的数据类型。如果创建一个数组,并赋值给一个变量,则创建的集合就是可以修改的。这意味着在创建数组后,可以通过添加、删除、修改的方式改变

2017-08-29 15:59:07 426

原创 Swift 字符(Character)

一、定义let char1: Character = "A"let char2: Character = "B"print("char1 的值为 \(char1)")print("char2 的值为 \(char2)")输出结果:char1 的值为 Achar2 的值为 B 注意:如果你想在 Character(字符) 类型的常量中存储更多的字符,则程序执行会报错,如下所示:// Swi

2017-08-22 17:18:05 1621

原创 Swift 字符串

一、定义1、创建字符串//使用字符串字面量var stringA = "Hello, World!"print( stringA )//String 实例化var stringB = String("Hello, World!")print( stringB )输出结果Hello, World!Hello, World!2、空字符串// 使用...

2017-08-22 09:47:09 539

原创 Swift 循环

一、循环类型Swift 语言提供了以下几种循环类型1、for-in遍历一个集合里面的所有元素,例如由数字表示的区间、数组中的元素、字符串中的字符。 例1:for index in 1...5 { print("\(index) 乘于 5 为:\(index * 5)")}例2:var someInts:[Int] = [10, 20, 30]for index in someInts

2017-08-18 16:14:58 409

原创 Swift 条件语句

条件语句通过设定的一个或多个条件来执行程序,在条件为真时执行指定的语句,在条件为 false 时执行另外指定的语句。主要包括如下几种类型的条件语句:一、if 语句if 语句 由一个布尔表达式和一个或多个执行语句组成。var varA:Int = 10;/* 检测条件 */if varA < 20 { /* 如果条件语句为 true 执行以下程序 */ print("varA 小于

2017-08-18 16:05:46 330

转载 屏蔽Xcode8 日志输出

Xcode8 屏蔽跟项目无关的输出: Xcode8里边 Edit Scheme… -> Run -> Arguments, 在Environment Variables里边添加“OS_ACTIVITY_MODE = disable”

2017-08-18 11:29:59 369 2

原创 Swift 运算符

运算符是一个符号,用于告诉编译器执行一个数学或逻辑运算。 Swift 提供了以下几种运算符:算术运算符比较运算符逻辑运算符位运算符赋值运算符区间运算符其他运算符一、算术运算符以下表格列出了 Swift 语言支持的算术运算符,其中变量 A 为 10,变量 B 为 20: 运算符 描述 实例 + 加号 A + B 结果为 30 − 减号 A − B 结

2017-08-10 16:51:16 563

原创 Swift 字面量

所谓字面量,就是指像特定的数字,字符串或者是布尔值这样,能够直接了当地指出自己的类型并为变量进行赋值的值。 比如在下面:let aNumber = 3 //整型字面量let aString = "Hello" //字符串字面量let aBool = true //布尔值字面量一、整型字面量整型字面量可以是一个十进制,二进制,八进制或十六进制常量。 二进制前缀为

2017-08-09 17:59:25 312

原创 Swift 常量

常量一旦设定,在程序运行时就无法改变其值。 常量可以是任何的数据类型如:整型常量,浮点型常量,字符常量或字符串常量。同样也有枚举类型的常量: 常量类似于变量,区别在于常量的值一旦设定就不能改变,而变量的值可以随意更改。一、常量声明常量使用关键字 let 来声明,语法如下:let constantName = < initial value >let constA = 42print(const

2017-08-09 14:49:43 380

原创 Swift 可选(Optionals)类型

Swift 的可选(Optional)类型,用于处理值缺失的情况。可选表示”那儿有一个值,并且它等于 x “或者”那儿没有值”。 Swfit语言定义后缀?作为命名类型Optional的简写,换句话说,以下两种声明是相等的:var optionalInteger: Int?var optionalInteger: Optional<Int> 注意,在类型和 ?之间没有空格。Optional

2017-08-09 14:31:41 463

原创 Swift 变量

变量是一种使用方便的占位符,用于引用计算机内存地址。 Swift 每个变量都指定了特定的类型,该类型决定了变量占用内存的大小,不同的数据类型也决定可存储值的范围。基本的数据类型,包括整形Int、浮点数Double和Float、布尔类型Bool以及字符串类型String。此外,Swift还提供了其他更强大数据类型, Optional, Array, Dictionary, Struct, 和 Cla

2017-08-09 14:05:11 463

原创 Swift 数据类型

数据类型: ①、Int ②、UInt ③、浮点数 ④、布尔值 ⑤、字符串 ⑥、字符 ⑦、可选类型一、Int一般来说,你不需要专门指定整数的长度。Swift 提供了一个特殊的整数类型Int,长度与当前平台的原生字长相同:在32位平台上,Int和Int32长度相同。在64位平台上,Int和Int64长度相同。除非你需要特定长度的整数,一般来说使用Int就

2017-08-09 13:22:53 374

转载 iOS导航栏的正确隐藏方式

简介 在项目中经常碰到首页顶部是无限轮播,需要靠最上面显示.有的设置导航栏为透明等一系列的方法,这个可以借助第三方.或者干脆简单粗暴的直接隐藏掉导航栏.可是push到下一个页面的时候是需要导航栏的,如何做了,这里给出两种方法.第一种做法注意这里一定要用动画的方式隐藏导航栏,这样在使用滑动返回手势的时候效果最好,和上面动图一致.这样做有一个缺点就是在切换tabBar的时候有一个导航栏向上消失的动

2017-06-09 13:46:17 832

转载 Xcode重构功能

转载:http://www.jianshu.com/p/595b7f03e76aXcode提供了以下几个重构功能:①、Rename②、Extract③、Create Superclass④、Move Up⑤、Move Down⑥、Encapsulate在菜单栏中的位置如下图: 在代码区里直接右键也能出现重构的相关菜单: 一、Rename:重命名几乎可以试用所有symbol:类名,方

2017-02-13 14:56:03 520

原创 iOS开发 - 事件传递响应链

一、序言当我们在使用微信等工具,点击扫一扫,就能打开二维码扫描视图。在我们点击屏幕的时候,iphone OS获取到了用户进行了“单击”这一行为,操作系统把包含这些点击事件的信息包装成UITouch和UIEvent形式的实例,然后找到当前运行的程序,逐级寻找能够响应这个事件的对象,直到没有响应者响应。这一寻找的过程,被称作事件的响应链,如下图所示,不用的响应者以链式的方式寻找。 事件响应链: 二、

2017-02-13 11:42:25 1160

原创 iOS开发Foundation中的断言处理

Foundation中定义了两组断言的宏,分别是: NSAssert / NSCAssert NSParameterAssert / NSCParameterAssert这两组宏主要在功能和语义上有所差别,这些区别主要有以下两点:1、如果我们需要确保方法或函数的输入参数的正确性,则应该在方法(函数)的顶部使用NSParameterAssert / NSCParameterAssert

2017-02-08 16:54:09 332

转载 iOS 10:一、CAAnimationDelegate 的简单适配

来源:霖溦(@羽霖溦) 链接:http://www.jianshu.com/p/e9feb2c0c3f1一、iOS10中CAAnimationDelegate的警告原有的工程用xcode8打开编译后,莫名的增加了许多警告,其中关于动画的警告有这样一个,虽然运行后发现并没有什么影响,但还是要探究一下:在这里的原因就很明了了,动画的代理没有遵循协议。于是: 把这段代码再用xcode7编译一下试

2017-02-08 16:35:21 870

原创 iOS 实现消息推送及原理分析

摘抄:脚本之家一、消息推送原理在实现消息推送之前先提及几个于推送相关概念,如下图:1、简介(1)、Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]);(2)、APNS:Apple Push Notification Service[苹果消息推送服务器];(3)、iPhone:用来接收

2017-01-03 16:19:42 1425

转载 iOS 10:二、相机等崩溃

文/某个胖子(简书作者) 原文链接:http://www.jianshu.com/p/ec15dadd38f3 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。iOS10闪退 崩溃1: This app has crashed because it attempted to access privacy-sensitive data without a usage d

2016-12-28 16:59:48 516

转载 iOS 10:四、因苹果健康导致闪退 crash

文/陈怀哲(简书作者) 原文链接:http://www.jianshu.com/p/545bd1bf5a23 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。如果在app中调用了苹果健康,iOS10中会出现闪退。 控制台报出的原因是: Terminating app due to uncaught exception ‘NSInvalidArgumentExcept

2016-12-28 16:57:22 493

转载 iOS 10:三、相册相机闪退bug

转载:http://www.jianshu.com/p/5085430b029fiOS10系统下调用系统相册、相机功能,遇到闪退的情况,描述如下: This app has crashed because it attempted to access privacy-sensitive data without a usage description.The app’s Info.

2016-12-28 16:51:49 554

原创 Xcode 8:适配

一、证书管理在Xcode8之前,都需要自己设置证书和描述文件。如果设置出现错误的情况下,还可以通过点击Fix issue来修复这个错误。但这有个问题就在于,Fix issue选项并不是那么好用,有的时候设置是正确的这里也提示需要Fix issue。在Xcode8中可以通过Automatically manage signing选项,让苹果为我们管理证书和配置文件,设置也都是由苹果来完成的。在Xcod

2016-12-28 16:48:45 663

原创 CAEmitterLayer粒子效果

一、CAEmitterLayer&CAEmitterCells在 UIKit 中,粒子系统由两部分组成: 1、一个或多个 CAEmitterCells :发射器电池可以看作是单个粒子的原型(例如,一个单一的粉扑在一团烟雾)。当散发出一个粒子,UIKit根据这个发射粒子和定义的基础上创建一个随机粒子。此原型包括一些属性来控制粒子的图片,颜色,方向,运动,缩放比例和生命周期。2、一个或多个 CAEmi

2016-12-15 17:17:04 661

原创 iOS 常用公共方法(四)

原文链接:点击这里1、navigationBar变为纯透明//第一种方法//导航栏纯透明[self.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];//去掉导航栏底部的黑线self.navigationBar.shadowImage = [UIImage new];//第二种方

2016-11-21 15:58:15 362

原创 iOS 常用公共方法(三)

1、让Xcode的控制台支持LLDB类型的打印打开终端输入三条命令:touch ~/.lldbinitecho display @import UIKit >> ~/.lldbinitecho target stop-hook add -o \"target stop-hook disable\" >> ~/.lldbinitCocoaPods pod install/pod update更新

2016-11-21 15:53:14 775

全国城市商圈经纬度MYSQL版

全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版,全国城市商圈经纬度MYSQL版

2024-05-08

全国城市商圈经纬度MYSQL版

全国城市商圈经纬度MYSQL版

2022-12-01

iOS-组件化管理.zip

iOS组件化管理

2022-01-04

设计原则(责任链,桥接,适配器,单例,命令)

设计原则(责任链,桥接,适配器,单例,命令) + 六大原则

2021-05-12

runtime 818.2

runtime 818.2版本

2021-04-28

RuntimeObject.zip

Objective-C Runtime是一个将C语言转化为面向对象语言的扩展。 我们将C++和Objective进行对比,虽然C++和Objective-C都是在C的基础上加入面向对象的特性扩充而成的程序设计语言,但二者实现的机制差异很大。C++是基于静态类型,而Objective-C是基于动态运行时类型。也就是说用C++编写的程序编译时就直接编译成了可令机器读懂的机器语言;用Objective-C编写的程序不能直接编译成可令机器读懂的机器语言,而是在程序运行的时候,通过Runtime把程序转为可令机器读懂的机器语言。Runtime是Objective不可缺少的重要一部分。

2020-09-04

RuntimeObject.zip

Objective-C Runtime是一个将C语言转化为面向对象语言的扩展。 我们将C++和Objective进行对比,虽然C++和Objective-C都是在C的基础上加入面向对象的特性扩充而成的程序设计语言,但二者实现的机制差异很大。C++是基于静态类型,而Objective-C是基于动态运行时类型。也就是说用C++编写的程序编译时就直接编译成了可令机器读懂的机器语言;用Objective-C编写的程序不能直接编译成可令机器读懂的机器语言,而是在程序运行的时候,通过Runtime把程序转为可令机器读懂的机器语言。Runtime是Objective不可缺少的重要一部分。

2020-09-04

iOS-KVC的实现

KVC全称是Key Value Coding(键值编码),是一个基于NSKeyValueCoding非正式协议实现的机制,它可以直接通过key值对对象的属性进行存取操作,而不需通过调用明确的存取方法。这样就可以在运行时动态在访问和修改对象的属性,而不是在编译时确定。

2020-08-28

iOS-KVO.zip

KVO全称是Key Value Observing,是苹果提供的一套事件通知机制。允许对象监听另一个对象特定属性的改变,并在改变时接收到事件。由于KVO的实现机制,只针对属性才会发生作用,一般继承自NSObject的对象都默认支持KVO。

2020-08-25

空空如也

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

TA关注的人

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