Правило будет только выставлять то, что вы позволите переопределить, это означает, помещать в ваш интерфейс то, что действительно общедоступно.При необходимости прямо указывайте, что при переопределении определенного вызова метода в какой-то момент [super methodName].
В вашем примере вы переопределите метод - (void)setWidth:(int)width andHeight:(int)height
, и вы бы хотели выдать ошибку, если width != height
.Или вы можете также выдать ошибку и заставить пользователя использовать только - (void)setSide:(int)side
.
Например, вы можете сделать:
// If you want to test and accept cases when width == height
- (void)setWidth:(int)width andHeight:(int)height {
NSAssert(width == height, NSLocalizedString(@"This is a Square. Width has to be height.", nil));
[super setWidth:width andHeight:height];
// Or
[self setSide:width];
}
// Or if you want to completely prohibit the usage of the method
- (void)setWidth:(int)width andHeight:(int)height {
NSAssert(NO, NSLocalizedString(@"This is a Square! Please use - (void)setSide:(int)side method.", nil));
}
Если вы хотите выдать некоторые ошибки и предупреждения навремя компиляции, вы можете использовать в объявлении ваших методов некоторые макросы, определенные в NSObjCRuntime.h
.