diwu / DWURecyclingAlert

Optimizing UITableViewCell For Fast Scrolling
MIT License
559 stars 38 forks source link

reduce code length, fix some selector using #4

Closed DaidoujiChen closed 9 years ago

DaidoujiChen commented 9 years ago

Hello @diwu,

這次修改的部分主要的目的, 是想把 generateTimeLabelForUITableViewCellgenerateTimeLabelForUICollectionViewCell 類似的部分, 抽出來做為另外一個 function.

過程中, 有發現一些點, 感覺上怪怪的, 所以一併做了一些修改, 第一個是

NSString *selStr = NSStringFromSelector(@selector(setDataSource:));
SEL selector = NSSelectorFromString(selStr);
SEL newSelector = NSSelectorFromString([NSString stringWithFormat:@"dwu_uicollectionview_%@", selStr]);

這類的寫法, 把同樣的 SELNSString 然後又轉回 SEL, 我們應該可以寫成

SEL selector = @selector(setDataSource:);
NSString *selStr = NSStringFromSelector(selector);
SEL newSelector = NSSelectorFromString([NSString stringWithFormat:@"dwu_uitableview_%@", selStr]);

減少一次轉換.

第二個是, 原先的 code 裡面

SEL cellForItemSel = NSSelectorFromString(cellForItemSelStr);
SEL newCellForItemSel = NSSelectorFromString([NSString stringWithFormat:@"dwu_%@", selStr]);

在這邊 newCellForItemSel 應該是由 cellForItemSel 這個 SEL 的延續, 而不是 selStr 的, 這邊的 selStr 指的是更外面的 setDataSource:, 我猜測, 這邊我們想要替換的 SEL 應該是 collectionView:cellForItemAtIndexPath:, 所以把程式碼替換成下面的樣子

SEL cellForItemSel = @selector(collectionView:cellForItemAtIndexPath:);
NSString *cellForItemSelStr = NSStringFromSelector(cellForItemSel);
SEL newCellForItemSel = NSSelectorFromString([NSString stringWithFormat:@"dwu_%@", cellForItemSelStr]);

大致上是這個樣子, 可以互相討論, 謝謝. :)

diwu commented 9 years ago

Awesome. Thanks a lot.