- 博客(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 881
原创 @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 1110
原创 iOS发布需要注意
因为正式环境和测试还是有区别的,无论你怎么开发。因此,我认为在上线时一定要在发布版本下跑一下,即release时跑一下,这样才会保证产品的质量。 本次发布时,我们遇到一个问题: 由于新接手一部分项目,对APP的环境切换不太了解。因为新版本需要切换域名,但是我并没有把所有的域名都切换过来,这就导致新版本涉及到的域名无法使用。这当然是有解决方案的,但是我们要避免这种错误的发生:为了避免上述错误...
2018-03-19 11:01:49 252
原创 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 4900
原创 git要有暂存区概念的原因
为什么要有暂存区呢? 刚刚使用git的时候一直有这个疑惑,每次提交版本的时候都要先add,才能commit。感觉好麻烦是不是。那人家当时的git设计者设计它的初衷是什么呢?没有可以不可以呢? 没有暂存区 下边想象一下下边这种情形,我们修改了大量的文件。但是有部分文件修改必须放弃,不能提交到版本库。我们怎么办呢?只能把一个个的文件修改之后,再进行提交。这样是不是很麻烦呢?如果有暂存区的话,我们可
2017-05-13 12:03:54 1562 2
原创 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 219
原创 IQKeyboardManager文本代理问题
IQKeyboardManager是一个比较常用的第三方库,它能够非常方便的处理键盘事件。但是,他也给我们带来了问题。 //IQKeyboardManager导致这个方法的传递机制出现了问题,页面中有n个文本,点击任意一个文本。下边的协议方法都会走很多次,不管你达没达成协议代理。 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textFie
2017-05-12 18:27:14 392
原创 swift中构造器的自动继承
自动继承情况1: 如果子类没有定义任何指定构造器,那么父类的所有指定构造器将会自动继承。 自动继承情况2: 如果你继承了所有父类的指定构造器,或者通过自定义的方式实行了所有的指定构造器。那么它将继承所有父类的自动构造器。 //注释 即使你在子类中定义了更多的便利构造器,上述两条规则依然适用。
2017-03-18 11:25:52 357
转载 swift的默认构造器
swift中的存储属性如果有默认值(如果存储属性申明为可选,那么它如果不赋值的话,默认值为nil)。但是这个类却没有自定义的构造器的话,swift会为这些类提供默认的构造器,这个默认构造器将简单的创建所有属性都为默认值的实例。
2017-03-18 10:53:33 360
原创 swift中构造器的继承和重写
swift与oc在构造器的继承方面不同: 1.swift的构造器是不可以继承的,这样做可以防止子类被错误的创建。 2.你如果想要让子类也可以调用与父类一样的方法,你可以用override来重写父类的方法。而oc是不需要进行重写的。
2017-03-18 10:31:40 333
原创 swift的两段式构造过程
swift中构造过程分为两步: 1.指定初始值 2.给每个类一次机会,进一步定制自己的存储属性。 两段式构造过程可以防止属性在初始化之前被访问。 注释 swift与oc的很大不同之处在于:oc给每个属性默认赋值为nil或者0,swift可以自如处理这些异常情况 swift执行的安全检查 1.在本类的所有存储属性初始化之前,不可以对父类进行初始化。 2.在父类初始完之前,不能给父类的属
2017-03-18 09:53:50 525
原创 switch语句
switch语句的特点: 1.switch语句必须是完备的,不想全部写可以提供default语句 2.switch语句不存在隐式的贯穿,与c和oc有跟大的不同。这样更加的安全,简洁。再也不需要写break语句了。 3.为了让多个值匹配同一种情况,可以把几个值用逗号隔开用一个case语句进行匹配。 4.
2017-03-17 17:48:53 295
原创 swift中Any和AnyObject
swift为不确定类型提供了两种特殊的类型别名: 下边创建了可以存储类型的数组: things 数组包含两个 Int 值,两个 Double 值,一个 String 值,一个元组 (Double, Double),一个Movie实例“Ghostbusters”,以及一个接受 String 值并返回另一个 String 值的闭包表达式。 可以使用switch语句进行遍历并且进行相应的操作
2017-03-17 13:40:08 3297
转载 swift中as和is关键字
is操作符: 若一个类属于另一个类的子类,则会返回true,否则返回false。 as操作符: 某类型的一个常量或变量可能在幕后实际上属于一个子类。当确定是这种情况时,你可以尝试向下转到它的子类型,用类型转换操作符(as? 或 as!)。 因为向下转型可能会失败,类型转型操作符带有两种不同形式。条件形式as? 返回一个你试图向下转成的类型的可选值。强制形式 as! 把试图向下转型和强制解
2017-03-17 11:35:58 2781
原创 类的继承和构造过程
类的构造器写法: 构造器代理原则: 指定构造器必须总是向上代理 便利构造器必须总是横向代理 //注释 为了对父类进行相应的初始化,必须调用自己父类的指定初始化器。因为指定初始化器目的是要对所有的存储属性进行初始化。
2017-03-17 11:11:02 296
原创 swift初始化特点
1.初始化时,swift没必要像oc那样返回值。保证实例在第一次使用前完成正确的初始化。 2.类和结构体在创建实例时,必须为所有存储型属性设置合适的初始值。存储型属性的值不能处于一个未知的状态。 你可以在构造器中为存储型属性赋初值,也可以在定义属性时为其设置默认值。以下小节将详细介绍这两种方法。 3.结构体构造器特殊特性 4.
2017-03-15 17:55:18 246
翻译 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 438
翻译 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 215
翻译 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 272
翻译 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 388
翻译 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 793
翻译 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 439
翻译 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 1783
翻译 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 249
翻译 字符串、数组和字典的赋值和复制
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 833
翻译 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 224
翻译 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 1214
翻译 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 362
翻译 自动闭包
定义 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 385
翻译 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 974
原创 swift闭包的值捕获
我们说嵌套函数其实也是一种特殊的闭包: 在第一次调用得到嵌套函数时,其实嵌套函数已经捕获了在他之前定义的包括参数和局部变量等。以后这些值如果需要进行改变的话,进行的是引用的改变。 注意 第二次重新得到新的嵌套函数与第一次的无关。因为他是一个新的内存。 闭包是引用类型 当你把一个闭包或者函数赋值给一个常量或者变量时,得到的是闭包或者函数的引用。
2017-03-07 16:55:45 732
原创 swift的闭包
函数其实就是一种特殊的闭包。分为三种情况: 全局函数:它是有名称并不捕获任何值得闭包。 嵌套函数:它是有名称的闭包,可以从封闭的函数中波或值。 闭包表达式:它是无名称的闭包,可以捕获它上下文的值。 定义 The start of the closure’s body is introduced by the in keyword. This keyword indicates th
2017-03-07 16:12:47 293
原创 函数类型
定义 函数类型由参数类型和函数的返回组成。 这两个函数的类型是:(Int,Int)->Int 这个函数的类型是:()->Void 函数类型变量 函数类型和其他的数据类型没有区别。你可以以用函数类型来定义常量或者变量。函数名其实函数类型的一个实例。因此可以把函数名进行赋值操作。 注意:使用函数类型变量不需要输入标签名。同时这也给输入带来了一定的风险。 函数类型作为参数 函数
2017-03-07 11:30:21 760
原创 变量参数和指针参数
变量参数 变量参数这种函数可以不定量的输入参数值,但是一个函数参数里边只能有一个变量参数。 指针参数 函数的参数默认是常量,不能改变。要想改变,需要做两步: 1.传入指针,做法就是在传入时加上&符号。然后在函数内部就可以改变外部变量了。但是传入的参数必须是可变类型。 2.在定义函数时将inout类型放在参数类型前 3.指针参数不能有默认值。
2017-03-07 10:20:38 363
原创 swift函数的参数标签和参数名称
每个函数参数都具有参数标签和参数名称。参数标签在调用函数时使用; 参数标签写在参数名称前。参数名称用于函数的实现。默认情况下,参数使用其参数名称作为其参数标签。 省略参数标签 如果不想要参数的参数标签,请为该参数编写下划线(_),而不是显式参数标签。 默认值 swift的参数可以使用默认值,默认值一般写在最后,把需要写的参数写在前。
2017-03-07 09:35:17 1183
原创 swift函数
1.无参数的函数 注意尽管不带参数,但是我们在调用的时候还是要带上空括号。这也体现了swift语言的准确性,它让你的代码必须表达明确 2.带参数的函数 注意:函数里边的数组之类的并不进行类型检查,运行时可能会崩溃。因此,我们在写代码的时候需要进行异常判断。
2017-03-06 18:08:16 160
原创 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 154
原创 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 262
原创 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 3406
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人