感謝: chengfang
ios開發—懶載入
1.懶載入——也稱為延遲載入,即在需要的時候才載入(效率低,占用記憶體小)。所謂懶載入,寫的是其get方法.
注意:如果是懶載入的話則一定要注意先判斷是否已經有了,如果沒有那麼再去進行alloc init
2.我們知道ios裝置的記憶體有限,如果在程式在啟動後就一次性載入將來會用到的所有資源,那麼就有可能會耗盡ios裝置的記憶體。這些資源例如大量資料,,音訊等等
下面舉個例子:
1> 定義控制項屬性,注意:屬性必須是strong的,示例**如下:
@property (nonatomic, strong) uiimageview *icon;
@property (nonatomic, strong) uibutton *nextbtn;
@property (nonatomic, strong) nsarray *imagelist;
2> 在屬性的getter方法中實現懶載入,示例**如下:
// 懶載入-在需要的時候,再例項化載入到記憶體中
/***控制項的延遲載入 ***/
-(uiimageview *)icon
//判斷是否已經有了,若沒有,則進行例項化
if (!_icon) {
_icon=[[uiimageview alloc]initwithframe:cgrectmake(x, y, w, h)];
uiimage *image=[uiimage imagenamed:@"icon"];
_icon.image=image;
[self.view addsubview:_icon];
return _icon;
/***按鈕的延遲載入 ***/
-(uibutton *)nextbtn
//判斷是否已經有了,若沒有,則進行例項化
if (!_nextbtn) {
_nextbtn=[uibutton buttonwithtype:uibuttontypecustom];
_nextbtn.frame=cgrectmake(0, self.view.center.y, 40, 40);
[_nextbtn setbackgroundimage:[uiimage imagenamed:@"normal"] forstate:uicontrolstatenormal];
[_nextbtn setbackgroundimage:[uiimage imagenamed:@"highlighted"] forstate:uicontrolstatehighlighted];
[self.view addsubview:_nextbtn];
[_nextbtn addtarget:self action:@selector(nextclick:) forcontrolevents:uicontroleventtouchupinside];
return _nextbtn;
/*** array的get方法 ***/
- (nsarray *)imagelist{
// 只有第一次呼叫getter方法時,為空,此時例項化並建立陣列
if (_imagelist == nil) {
// file表示從檔案的完整路徑載入檔案
nsstring *path = [[nsbundle mainbundle] pathforresource:@"imagedata" oftype:@"plist"];
_imagelist = [nsarray arraywithcontentsoffile:path];
return _imagelist;
如上面的**,有乙個_imagelist屬性,如果在程式的**中,有多次訪問_imagelist屬性,例如下面
self.imagelist ;self.imagelist ;self.imagelist ;
雖然訪問了3次_imagelist 屬性,但是當第一次訪問了imagelist屬相,imagelist陣列就不為空,
當第二次訪問imagelist 時 imagelist != nil,就不會再次在plist檔案中載入資料了。
3. 使用懶載入的好處:
(1)不必將建立物件的**全部寫在viewdidload方法中,**的可讀性更強
(2)每個控制項的getter方法中分別負責各自的例項化處理,**彼此之間的獨立性強,松耦合
(3) 只有當真正需要資源時,再去載入,節省了記憶體資源。
感謝: chengfang
ios開發—懶載入
1.懶載入——也稱為延遲載入,即在需要的時候才載入(效率低,占用記憶體小)。所謂懶載入,寫的是其get方法.
注意:如果是懶載入的話則一定要注意先判斷是否已經有了,如果沒有那麼再去進行alloc init
2.我們知道ios裝置的記憶體有限,如果在程式在啟動後就一次性載入將來會用到的所有資源,那麼就有可能會耗盡ios裝置的記憶體。這些資源例如大量資料,,音訊等等
下面舉個例子:
1> 定義控制項屬性,注意:屬性必須是strong的,示例**如下:
@property (nonatomic, strong) uiimageview *icon;
@property (nonatomic, strong) uibutton *nextbtn;
@property (nonatomic, strong) nsarray *imagelist;
2> 在屬性的getter方法中實現懶載入,示例**如下:
// 懶載入-在需要的時候,再例項化載入到記憶體中
/***控制項的延遲載入 ***/
-(uiimageview *)icon
//判斷是否已經有了,若沒有,則進行例項化
if (!_icon) {
_icon=[[uiimageview alloc]initwithframe:cgrectmake(x, y, w, h)];
uiimage *image=[uiimage imagenamed:@"icon"];
_icon.image=image;
[self.view addsubview:_icon];
return _icon;
/***按鈕的延遲載入 ***/
-(uibutton *)nextbtn
//判斷是否已經有了,若沒有,則進行例項化
if (!_nextbtn) {
_nextbtn=[uibutton buttonwithtype:uibuttontypecustom];
_nextbtn.frame=cgrectmake(0, self.view.center.y, 40, 40);
[_nextbtn setbackgroundimage:[uiimage imagenamed:@"normal"] forstate:uicontrolstatenormal];
[_nextbtn setbackgroundimage:[uiimage imagenamed:@"highlighted"] forstate:uicontrolstatehighlighted];
[self.view addsubview:_nextbtn];
[_nextbtn addtarget:self action:@selector(nextclick:) forcontrolevents:uicontroleventtouchupinside];
return _nextbtn;
/*** array的get方法 ***/
- (nsarray *)imagelist{
// 只有第一次呼叫getter方法時,為空,此時例項化並建立陣列
if (_imagelist == nil) {
// file表示從檔案的完整路徑載入檔案
nsstring *path = [[nsbundle mainbundle] pathforresource:@"imagedata" oftype:@"plist"];
_imagelist = [nsarray arraywithcontentsoffile:path];
return _imagelist;
如上面的**,有乙個_imagelist屬性,如果在程式的**中,有多次訪問_imagelist屬性,例如下面
self.imagelist ;self.imagelist ;self.imagelist ;
雖然訪問了3次_imagelist 屬性,但是當第一次訪問了imagelist屬相,imagelist陣列就不為空,
當第二次訪問imagelist 時 imagelist != nil,就不會再次在plist檔案中載入資料了。
3. 使用懶載入的好處:
(1)不必將建立物件的**全部寫在viewdidload方法中,**的可讀性更強
(2)每個控制項的getter方法中分別負責各自的例項化處理,**彼此之間的獨立性強,松耦合
(3) 只有當真正需要資源時,再去載入,節省了記憶體資源。
iOS懶載入模式
懶載入 概念 所謂懶載入是乙個物件徐濤建立時才會被建立,不需要建立時不被建立 使用場景 ios中的uitableview就用到了懶載入,tableviewcell原生元件在宣告getting方法時,ps imageview屬性,textlable屬性,detailtextlabel屬性 readon...
IOS 懶載入模式
ios開發 懶載入 1.懶載入 也稱為延遲載入,即在需要的時候才載入 效率低,占用記憶體小 所謂懶載入,寫的是其get方法.注意 如果是懶載入的話則一定要注意先判斷是否已經有了,如果沒有那麼再去進行alloc init 2.我們知道ios裝置的記憶體有限,如果在程式在啟動後就一次性載入將來會用到的所...
懶載入模式
命令列建立資料庫 mysql uroot p create database charset utf8 資料遷移 flask migrate 官方鏈結 安裝 pip install flask magrate manage.py db migrate message 更新了xx python man...