自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 iOS中的load方法

+(void)load; 官方解释: https://developer.apple.com/documentation/objectivec/nsobject/1418815-load?language=occ Invoked whenever a class or category is added to the Objective-C runtime; implem...

2018-03-29 17:15:04 834

原创 @synchronized的使用

参考文档: [https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html#//apple_ref/doc/uid/10000057i-CH8-SW1] 官方文档: The @synchronized dir...

2018-03-21 19:15:58 1073

原创 iOS发布需要注意

因为正式环境和测试还是有区别的,无论你怎么开发。因此,我认为在上线时一定要在发布版本下跑一下,即release时跑一下,这样才会保证产品的质量。 本次发布时,我们遇到一个问题: 由于新接手一部分项目,对APP的环境切换不太了解。因为新版本需要切换域名,但是我并没有把所有的域名都切换过来,这就导致新版本涉及到的域名无法使用。这当然是有解决方案的,但是我们要避免这种错误的发生:为了避免上述错误...

2018-03-19 11:01:49 228

原创 iOS 接收通知的线程一定是主线程吗?

问题:在主线程中A对象监听到通知B后,调用函数functionX。然后我们开启一条子线程,在子线程中发出通知B。现在问A对象执行方法functionX时是在哪个线程? In a multithreaded application, notifications are always delivered in the thread in which the notification wa...

2018-03-16 18:32:13 4800

原创 针对iOS中数组添加nil的解决方案

交换方法 runtime的封装 1.利用runtime进行方法进行交换,然后进行空判断。

2018-03-08 20:35:55 3257

原创 git要有暂存区概念的原因

为什么要有暂存区呢? 刚刚使用git的时候一直有这个疑惑,每次提交版本的时候都要先add,才能commit。感觉好麻烦是不是。那人家当时的git设计者设计它的初衷是什么呢?没有可以不可以呢? 没有暂存区 下边想象一下下边这种情形,我们修改了大量的文件。但是有部分文件修改必须放弃,不能提交到版本库。我们怎么办呢?只能把一个个的文件修改之后,再进行提交。这样是不是很麻烦呢?如果有暂存区的话,我们可

2017-05-13 12:03:54 1521 1

原创 git命令

参考博文:http://blog.csdn.net/wade333777/article/details/38294385 文件提交到暂存区 git add + 文件名:可以添加单个文件到暂存区。 git add .可以把所有改动添加到暂存区。 git diff +文件名:查看单个文件的修改。 git reset HEAD + 文件名:取消提交到暂存区的文件。 git reset HEA

2017-05-13 11:45:52 201

原创 IQKeyboardManager文本代理问题

IQKeyboardManager是一个比较常用的第三方库,它能够非常方便的处理键盘事件。但是,他也给我们带来了问题。 //IQKeyboardManager导致这个方法的传递机制出现了问题,页面中有n个文本,点击任意一个文本。下边的协议方法都会走很多次,不管你达没达成协议代理。 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textFie

2017-05-12 18:27:14 371

原创 swift中构造器的自动继承

自动继承情况1: 如果子类没有定义任何指定构造器,那么父类的所有指定构造器将会自动继承。 自动继承情况2: 如果你继承了所有父类的指定构造器,或者通过自定义的方式实行了所有的指定构造器。那么它将继承所有父类的自动构造器。 //注释 即使你在子类中定义了更多的便利构造器,上述两条规则依然适用。

2017-03-18 11:25:52 341

转载 swift的默认构造器

swift中的存储属性如果有默认值(如果存储属性申明为可选,那么它如果不赋值的话,默认值为nil)。但是这个类却没有自定义的构造器的话,swift会为这些类提供默认的构造器,这个默认构造器将简单的创建所有属性都为默认值的实例。

2017-03-18 10:53:33 332

原创 swift中构造器的继承和重写

swift与oc在构造器的继承方面不同: 1.swift的构造器是不可以继承的,这样做可以防止子类被错误的创建。 2.你如果想要让子类也可以调用与父类一样的方法,你可以用override来重写父类的方法。而oc是不需要进行重写的。

2017-03-18 10:31:40 314

原创 swift的两段式构造过程

swift中构造过程分为两步: 1.指定初始值 2.给每个类一次机会,进一步定制自己的存储属性。 两段式构造过程可以防止属性在初始化之前被访问。 注释 swift与oc的很大不同之处在于:oc给每个属性默认赋值为nil或者0,swift可以自如处理这些异常情况 swift执行的安全检查 1.在本类的所有存储属性初始化之前,不可以对父类进行初始化。 2.在父类初始完之前,不能给父类的属

2017-03-18 09:53:50 503

原创 switch语句

switch语句的特点: 1.switch语句必须是完备的,不想全部写可以提供default语句 2.switch语句不存在隐式的贯穿,与c和oc有跟大的不同。这样更加的安全,简洁。再也不需要写break语句了。 3.为了让多个值匹配同一种情况,可以把几个值用逗号隔开用一个case语句进行匹配。 4.

2017-03-17 17:48:53 268

原创 swift中Any和AnyObject

swift为不确定类型提供了两种特殊的类型别名: 下边创建了可以存储类型的数组: things 数组包含两个 Int 值,两个 Double 值,一个 String 值,一个元组 (Double, Double),一个Movie实例“Ghostbusters”,以及一个接受 String 值并返回另一个 String 值的闭包表达式。 可以使用switch语句进行遍历并且进行相应的操作

2017-03-17 13:40:08 3260

转载 swift中as和is关键字

is操作符: 若一个类属于另一个类的子类,则会返回true,否则返回false。 as操作符: 某类型的一个常量或变量可能在幕后实际上属于一个子类。当确定是这种情况时,你可以尝试向下转到它的子类型,用类型转换操作符(as? 或 as!)。 因为向下转型可能会失败,类型转型操作符带有两种不同形式。条件形式as? 返回一个你试图向下转成的类型的可选值。强制形式 as! 把试图向下转型和强制解

2017-03-17 11:35:58 2704

原创 类的继承和构造过程

类的构造器写法: 构造器代理原则: 指定构造器必须总是向上代理 便利构造器必须总是横向代理 //注释 为了对父类进行相应的初始化,必须调用自己父类的指定初始化器。因为指定初始化器目的是要对所有的存储属性进行初始化。

2017-03-17 11:11:02 275

原创 swift初始化特点

1.初始化时,swift没必要像oc那样返回值。保证实例在第一次使用前完成正确的初始化。 2.类和结构体在创建实例时,必须为所有存储型属性设置合适的初始值。存储型属性的值不能处于一个未知的状态。 你可以在构造器中为存储型属性赋初值,也可以在定义属性时为其设置默认值。以下小节将详细介绍这两种方法。 3.结构体构造器特殊特性 4.

2017-03-15 17:55:18 220

翻译 swift重写

A subclass can provide its own custom implementation of an instance method, type method, instance property, type property, or subscript that it would otherwise inherit from a superclass. This is known

2017-03-10 18:05:20 400

翻译 swift继承

A class can inherit methods, properties, and other characteristics from another class. When one class inherits from another, the inheriting class is known as a subclass, and the class it inherits from

2017-03-10 15:44:43 193

翻译 swift的附属脚本

Classes, structures, and enumerations can define subscripts, which are shortcuts for accessing the member elements of a collection, list, or sequence. You use subscripts to set and retrieve values by i

2017-03-09 23:04:09 255

翻译 swift中的类型方法

定义 Instance methods, as described above, are methods that are called on an instance of a particular type. You can also define methods that are called on the type itself. These kinds of methods are cal

2017-03-09 16:37:32 360

翻译 swift结构体常量的存储属性

If you create an instance of a structure and assign that instance to a constant, you cannot modify the instance’s properties, even if they were declared as variable properties: 如果你创建一个结构体实例并且把实例赋值给一个常

2017-03-09 15:08:12 771

翻译 swift结构体的mutating

Structures and enumerations are value types. By default, the properties of a value type cannot be modified from within its instance methods. 结构体和枚举都是值类型。默认的,在实例方法内部,值类型的属性不能被修改。 However, if you need

2017-03-09 14:55:10 402

翻译 swift中的self属性

Every instance of a type has an implicit property called self, which is exactly equivalent to the instance itself. You use the self property to refer to the current instance within its own instance met

2017-03-09 13:45:47 1739

翻译 swift方法

方法定义 Methods are functions that are associated with a particular type. Classes, structures, and enumerations can all define instance methods, which encapsulate specific tasks and functionality for wor

2017-03-09 13:16:03 221

翻译 字符串、数组和字典的赋值和复制

In Swift, many basic data types such as String, Array, and Dictionary are implemented as structures. This means that data such as strings, arrays, and dictionaries are copied when they are assigned to

2017-03-09 10:43:43 806

翻译 swift类和结构体(二)

枚举和结构体都是值类型 A value type is a type whose value is copied when it is assigned to a variable or constant, or when it is passed to a function. 值类型是:当他被赋值给常量或者变量的时候,它的值是被拷贝一份的,即不是引用。 当用它来赋值的时候,他的所有的值类型属

2017-03-08 23:23:46 200

翻译 swift类和结构体(一)

An instance of a class is traditionally known as an object. However, Swift classes and structures are much closer in functionality than in other languages, and much of this chapter describes functional

2017-03-08 18:06:37 1182

翻译 swift的枚举

An enumeration defines a common type for a group of related values and enables you to work with those values in a type-safe way within your code. 枚举为一组相关值定义了一个公共类型,使你在写代码的过程中可以以一种更加安全的方式来工作。 定义 你可

2017-03-08 16:20:50 321

翻译 自动闭包

定义 An autoclosure is a closure that is automatically created to wrap an expression that’s being passed as an argument to a function. It doesn’t take any arguments, and when it’s called, it returns the

2017-03-08 14:10:49 362

翻译 swift逃逸闭包

定义 A closure is said to escape a function when the closure is passed as an argument to the function, but is called after the function returns. When you declare a function that takes a closure as one o

2017-03-07 22:32:17 912

原创 swift闭包的值捕获

我们说嵌套函数其实也是一种特殊的闭包: 在第一次调用得到嵌套函数时,其实嵌套函数已经捕获了在他之前定义的包括参数和局部变量等。以后这些值如果需要进行改变的话,进行的是引用的改变。 注意 第二次重新得到新的嵌套函数与第一次的无关。因为他是一个新的内存。 闭包是引用类型 当你把一个闭包或者函数赋值给一个常量或者变量时,得到的是闭包或者函数的引用。

2017-03-07 16:55:45 709

原创 swift的闭包

函数其实就是一种特殊的闭包。分为三种情况: 全局函数:它是有名称并不捕获任何值得闭包。 嵌套函数:它是有名称的闭包,可以从封闭的函数中波或值。 闭包表达式:它是无名称的闭包,可以捕获它上下文的值。 定义 The start of the closure’s body is introduced by the in keyword. This keyword indicates th

2017-03-07 16:12:47 272

原创 函数类型

定义 函数类型由参数类型和函数的返回组成。 这两个函数的类型是:(Int,Int)->Int 这个函数的类型是:()->Void 函数类型变量 函数类型和其他的数据类型没有区别。你可以以用函数类型来定义常量或者变量。函数名其实函数类型的一个实例。因此可以把函数名进行赋值操作。 注意:使用函数类型变量不需要输入标签名。同时这也给输入带来了一定的风险。 函数类型作为参数 函数

2017-03-07 11:30:21 728

原创 变量参数和指针参数

变量参数 变量参数这种函数可以不定量的输入参数值,但是一个函数参数里边只能有一个变量参数。 指针参数 函数的参数默认是常量,不能改变。要想改变,需要做两步: 1.传入指针,做法就是在传入时加上&符号。然后在函数内部就可以改变外部变量了。但是传入的参数必须是可变类型。 2.在定义函数时将inout类型放在参数类型前 3.指针参数不能有默认值。

2017-03-07 10:20:38 344

原创 swift函数的参数标签和参数名称

每个函数参数都具有参数标签和参数名称。参数标签在调用函数时使用; 参数标签写在参数名称前。参数名称用于函数的实现。默认情况下,参数使用其参数名称作为其参数标签。 省略参数标签 如果不想要参数的参数标签,请为该参数编写下划线(_),而不是显式参数标签。 默认值 swift的参数可以使用默认值,默认值一般写在最后,把需要写的参数写在前。

2017-03-07 09:35:17 1141

原创 swift函数

1.无参数的函数 注意尽管不带参数,但是我们在调用的时候还是要带上空括号。这也体现了swift语言的准确性,它让你的代码必须表达明确 2.带参数的函数 注意:函数里边的数组之类的并不进行类型检查,运行时可能会崩溃。因此,我们在写代码的时候需要进行异常判断。

2017-03-06 18:08:16 142

原创 swift字典

1.创建空字典 var dic = Int:String let name = [“sex”:”男”] 2.判断空 name.isEmpty 3.访问和修改 3.1直接用下标 3.2利用更新方法 它有一个好处是会返回旧值。 4.删除 删除有两种方式 4.1置为nil 4.2利用方法移除 5遍历 5.1 遍历元组 5.2遍历所有键或者值 5.3根据键或者

2017-03-06 17:17:25 141

原创 swift字典

1.创建空字典 var dic = Int:String let name = [“sex”:”男”] 2.判断空 name.isEmpty 3.访问和修改 3.1直接用下标 3.2利用更新方法 它有一个好处是会返回旧值。 4.删除 删除有两种方式 4.1置为nil 4.2利用方法移除 5遍历 5.1 遍历元组 5.2遍历所有键或者值 5.3根据键或者

2017-03-06 17:11:02 239

原创 URL Scheme

应用程序的跳转一共分为两种情况: 1.从程序A跳转到B 从程序A跳转到B只需要知道B的URL scheme。 2.从程序B回到A 从程序B回到程序A,其实原理一样。在B中要知道A的URL scheme,即可直接跳转。 因此 实际上想要跳转到微信只需要知道它的scheme就可以直接进行跳转。 但是,要想从微信跳转回本应用,那微信就必须知道本应用的URL scheme。就像我们分享之后,有

2017-03-06 16:00:34 3351

空空如也

空空如也

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

TA关注的人

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