關於優化
除了以前用單例模式把數據放在一個類中的優化以外,今天又總結了其餘幾種關於tableView的一些優化
1.label等控件
當label的公共樣式屬性不少的時候,咱們有須要建不少label的時候,咱們能夠建立一個categary 把公共屬性部分放在方法中 把不一樣的屬性做爲參數傳進去
2.cell內容顯示
cell顯示內容的時候,以前咱們是對cell中的每一個控件依次賦值,若是這個自定義cell中有幾十個控件的話,咱們須要寫幾十行代碼,顯然這太繁瑣了
優化前:
cell.
iconImageViwe
.
image
= [
UIImage
imageNamed
:stu.
icon
];
cell.
nameLabel
.
text
= stu.
name
;
cell.
sexLable
.
text
= stu.
sex
;
cell.
phoneNumberLable
.
text
= stu.
phoneNumber
;
cell.
introduceLable
.
text
= stu.
introduce
;
優化後:
cell.
student
= stu;
name、sex、phoneNumber等這些都是學生對象的屬性,因此咱們能夠把這個學生直接傳給cell,
cell拿到這個學生對象之後,再把這個學生對象的各個屬性賦給本身的子控件。
cell要能直接拿到這個學生對象,就須要有一個student的屬性可供外界訪問和賦值。而後咱們須要重寫這個屬性的setter方法。
-(
void
)setStudent:(
Student
*)student
{
if
(
_student
!= student) {
[
_student
release
];
_student
= [student
retain
];
}
// 拿到這個對象之後把對象的屬性賦給cell的各個子控件,那麼子控件上顯示相應的值
self
.
iconImageViwe
.
image
= [
UIImage
imageNamed
:student.
icon
];
self
.
nameLabel
.
text
= student.
name
;
self
.
phoneNumberLable
.
text
= student.
phoneNumber
;
self
.
sexLable
.
text
= student.
sex
;
self
.
introduceLable
.
text
= student.
introduce
;
}
3.把自定義cell中的視圖設爲懶加載對象(該視圖須要被使用的時候纔會被建立)
該對象只有在被取值,即被調用它的getter方法時,對象纔會被建立,因此其初始化是在getter方法中實現的,因此咱們
須要改寫每一個屬性的getter方法,先判斷該對象是否爲空,若爲空,則建立。例如:
-(
UILabel
*)nameLabel
{
if
(
_nameLabel
==
nil
) {
_nameLabel
= [[
UILabel
alloc
]
initWithFrame
:
CGRectMake
(
CGRectGetMaxX
(
_iconImageViwe
.
frame
) +
kMargin
,
_iconImageViwe
.
frame
.
origin
.
y
,
150
,
30
)];
_nameLabel
.
backgroundColor
= [
UIColor
cyanColor
];
[
self
addSubview
:
_nameLabel
];
}
return
_nameLabel
;}