Създавам аритметично приложение и в него има подкласове на NSObject
за числа и цифри. И двата имат съответни обекти на изглед, които приемат източник на данни (или число, или цифра) и делегат, контролера на изгледа.
Открих, че е полезно да накараш изгледите и модела да работят заедно, за да зададат изгледите на цифри като свойство на съответните им цифри.
Например класът Number има свойство NSMutableArray
, което съдържа неговите цифри.
Ако искам да намеря размера за съответния NumberView, пиша мога да напиша код като този в контролера:
-(void) updateNumberViewFrameSize:(ACNumberView*) sender
{
NSUInteger i;
float width = 0, height = 0;
for (ACDigit* digit in [sender.dataSource returnNumberViewDataSource].digitArray)
{
width += digit.digitView.size.width;
height += digit.digitView.size.width;
}
sender.frame = CGRectMake(sender.frame.origin.x, sender.frame.origin.y, width, height);
}
Кодът работи добре, но смятам, че не е добра практика да държите този указател към изгледа от модела, дори ако самият модел не го използва.
Ако това е лоша практика, какви са потенциалните капани и има ли по-добър начин за постигане на този тип край?