lazy 懒加载
在Objectctive-C中体现的懒加载如下代码
// ClassA.h
@property (nonatomic, copy) NSString *testString;
// ClassA.m
- (NSString *)testString {
if (!_testString) {
_testString = @"Hello";
NSLog(@"只在首次访问输出");
}
return _testString;
}
Swift中如下
class ClassA {
lazy var str: String = {
let str = "Hello"
print("只在首次访问输出")
return str
}()
}
在使用lazy作为属性修复符时候,只能声明属性是变量。我们需要显式的指定属性类型,并使用一个可以对这个属性进行复制的语句来首次访问属性时运行。多次访问这个实例的str的话,可以看到只有一次输出。
如果为了简化,不需要做什么其他特殊操作的情况下,可以对lazy的属性值直接赋值:
lazy var str: String = "Hello"
相比oc中的实现方法,lazy的使用方法更为方便.
---------------------------------------------------
获取Swift的class
eg1:
xxxClass.self
eg2:
type(of: xxxClass())