Если я понимаю, о чем вы спрашиваете, вы сможете сделать это без особых хлопот. В вашем синглтон-классе SingletonErrors вы должны иметь:
@interface SingletonErrors : NSObject {
// some definitions ...
// The current array of all errors. This can also be an NSMutableSet if you like
NSMutableArray *sharedErrors;
// more definitions ...
}
// some properties ...
@property(nonatomic,retain) NSMutableDictionary<ErrorProtocol> *sharedErrors;
// more properties ...
- (void)addError:(NSMutableDictionary<ErrorProtocol> *)newError;
@end
Вы должны создать протокол для реализации. В этом примере протокола предположим, что вы хотите предоставить один метод для проверки правильности объекта - словарь содержит всю необходимую информацию.
@protocol ErrorProtocol
- (BOOL)isValid;
@end
Затем вам нужно будет создать подкласс NSMutableDictionary, чтобы ваш класс реализовал протокол ErrorProtocol
:
@interface MyMutableDictionary : NSMutableDictionary <ErrorProtocol> {
}
@end
@implementation MyMutableDictionary
- (BOOL)isValid {
// Do your validity checking here
return YES; // Obviously change this line
}
@end
Затем, всякий раз, когда вы генерируете ошибку, вы можете передать новый экземпляр MyMutableDictionary в SingletonErrors и заставить его вызывать селектор isValid
в MyMutableDictionary, поскольку гарантируется, что словарь будет соответствовать ErrorProtocol и отвечает на isValid
* * 1013
<pre>- (void)addError:(NSMutableDictionary<ErrorProtocol> *)newError {
if([newError isValid]) {
// Add the new error to the current array of errors
[self.sharedErrors addObject:newError];
// Other code to "broadcast" the error would go here
} else {
// Some code to error out of adding the error would go here
}
}</pre><code></p>
<p>Overall, what this solution does is:</p>
<ul>
<li>Hold a NSMutableArray of all errors in SingletonErrors</li>
<li>Each error is an NSMutableDictionary that conforms to ErrorProtocol</li>
<li>The object we use for each error is MyMutableDictionary, a subclass of NSMutableDictionary</li>
<li>The protocol ErrorProtocol defines a method isValid
, который проверяет, можно ли добавить ошибку,
Объект SingletonErrors вызывает метод isValid и добавляет ошибку соответствующим образом