Julian Home

Life You Life

自动化生成像是 ImageName 和 SegueName

在 Cocoa 框架中还有不少类似的用字符串来指定资源的使用方式。这类方法其实是存在隐患的,如果资源的名称发生了改变的话,你必须在代码中作出相应的改变 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 enum ImageName: String { case MyImage = "my_image" } enum SegueName...

隐式解包

隐式解包 [ ! ]

! 1 @IBOutlet weak var button: UIButton! 如果没有连接 IB 的话,对 button 的直接访问会导致应用崩溃,这种情况和错误在调试应用时是很容易被发现的问题。在我们的代码的其他部分,还是少用这样的隐式解包的 Optional 为好,很多时候多写一个 Optional Binding 就可以规避掉不少应用崩溃的风险。

属性

存储属性(Stored Properties) 计算属性(Computed Properties) 属性观察器(Property Observers) 全局变量和局部变量(Global and Local Variables) 类型属性(Type Properties) 计算属性可以用于类、结构体和枚举,存储属性只能用于类和结构体 存储属性(Stored Prop...

默认参数Default

1 2 3 4 5 6 7 8 9 10 11 12 13 14 func sayHello1(str1: String = "Hello", str2: String, str3: String) { print(str1 + str2 + str3) } func sayHello2(str1: String, str2: String, str3: String = "Wor...

mas_equalTo和equalTo 区别

支持的类型 equalTo 支持的是id类型,不能直接写数据,需用@ mas_equalTo 支持类型转换,是对equalTo 的封装,支持CGSize CGPoint NSNumber UIEdgeinsets等 看源码mas_equalTo 是一个对equalTo 的宏 1 #define mas_equalTo(...) eq...

enum 的 allValues

enum 在 java 或其他的语言中都有allValues,swift 中无,我们如何来实现: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 enum Suit: String, EnumTy...

MemoryLayout

写出内存最优的struct

Swift类型在内存中处理时要考虑三个属性:size,stride和alignment MemoryLayout 是个枚举 一种类型的内存布局,描述其大小、步长和对齐方式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 4...

... 和 ..<

1 2 3 4 5 6 7 8 9 //包含10 for i in 1...10 { print(i) } //不包含10 for i in 1..<10 { print(i) } 1 2 3 4 5 6 7 8 let test = "helLo" let interval = "a"..."z" for c in test.characters { i...

可选协议

optional protocol

可选协议通过@objc转换为oc来实现 1 2 3 4 5 6 7 8 9 @objc protocol OptionalProtocol { @objc optional func optionalMethod() func needMethod() } class testss: OptionalProtocol { func needMethod() { ...

多 protocol 组合使用

& 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 protocol A { func test() -> Int } protocol B { func test() -> String } typealias C = A & B //合并通过C 别名来使用,清晰避免冗余,歧义 class H...