Я пытаюсь улучшить скорость запуска моего приложения MVC2.
Я сделал первый раунд выборки производительности, и оказалось, что
MvcAreaRegistration.RegisterAllAreas
занимает большую часть времени запуска.
Я читал здесь , что вы также можете вручную зарегистрировать область, и я хотел бы чтобы попробовать это, @property (assign) BOOL touchable; @end // basic ...
Допустим, у меня определены следующие протоколы:
// основной протокол для объекта пользовательского интерфейса:
@protocol UIObjectProtocol
@property (assign) BOOL touchable;
@end
// основной протокол для объекта пользовательского интерфейса, который хранится объект держатель
:
@protocol UIHeldObjectProtocol
@property (readonly) id holder;
@end
И следующая иерархия классов:
// базовый класс для объекта пользовательского интерфейса, который синтезирует свойство touch
]
@interface UIObject : NSObject {
BOOL _touchable;
}
@end
@implementation UIObject
@synthesize touchable=_touchable;
@end
На этом этапе, все ок. Затем я создаю подкласс UIObject
с именем UIPlayingCard
. По сути, UIPlayingCard
соответствует UIObjectProtocol
, так как его суперкласс тоже делает это.
Теперь предположим, что я хочу, чтобы UIPlayingCard
соответствовала UIHeldObject42]. , поэтому я делаю следующее:
@interface UIPlayingCard : UIObject {
}
@end
@implementation UIPlayingCard
-(id)holder { return Nil; }
@end
Обратите внимание, что UIPlayingCard
соответствует UIHeldObjectProtocol
, который транзитивно соответствует UIObjectProtocol
. Однако я получаю предупреждения компилятора в UIPlayingCard
такие, что:
предупреждение: для свойства 'touchable' требуется метод '-доступный' подлежит определению - используйте @synthesize, @dynamic или предоставьте реализация метода
, что означает, что соответствие суперкласса UIPlayingCard
UIObjectProtocol
не было унаследовано (возможно, потому, что директива @synthesize
была объявлена в ] Область реализации UIObject
).
Обязан ли я повторно объявить директиву @synthesize
в реализации UIPlayingCard
?
@implementation UIPlayingCard
@synthesize touchable=_touchable; // _touchable now must be a protected attribute
-(id)holder { return Nil; }
@end
Или есть другой способ избавиться предупреждения компилятора? Будет ли это результатом плохого дизайна?
Заранее спасибо,