OC的懶加載
#import "DemoViewController.h"@interface DemoViewController ()@PRoperty (nonatomic, strong) UILabel *label;@end@implementation DemoViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. [self.view addSubview:self.label]; //釋放label _label = nil; //會再次調用懶加載 NSLog(@"%@", self.label);}-(UILabel *)label{ if (_label == nil) { _label = [[UILabel alloc] init]; _label.text = @"my hello"; _label.center = self.view.center; [_label sizeToFit]; } return _label;}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; //收到內存警告,可以釋放視圖 //On iOS 6.0 it will no longer clear the view by default. //iOS 6之后不會再釋放視圖,視圖會一直保留}@endSwift3.0的懶加載
import UIKitclass ViewController: UIViewController { private var label : UILabel? = UILabel(); override func viewDidLoad() { super.viewDidLoad() label?.text = "hello"; label?.sizeToFit(); print(label!); //釋放label label = nil; //和oc不同 //懶加載的代碼只會在第一次調用的時候,執行閉包,將閉包的結果保存在label的屬性中 print(label!); } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() //Swift中不要主動清理視圖或控件 //因為懶加載不會再次創建 }}
新聞熱點
疑難解答