Я думаю, что я должен использовать селекторы (или даже другую парадигму), но даже после R'ing TFM я не могу понять, что я должен делать. Все это связано с обратными вызовами от делегата
У меня есть мой основной объект Model:
@implementation Model
@synthesize myConnection; // which is an NSURLConnection
...
-(void)someMethod{
MyConnectionDelegate *mcd = [[MyConnectionDelegate alloc]initWithCallingObject:self];
myConnection = [[NSURLConnection alloc] initWithRequest:requestForToken delegate:mcd];
...
}
-(void)didGetCalledBack:(NSArray *)resultArray{
NSLog(@"got the callback");
}
и затем в моем делегате:
@implementation MyConnectionDelegate
@synthesize callingObject; // which is of type id
@synthesize resultArray; // NSArray
-(id)initWithCallingObject:(id)caller{
...//std [self init] block
self.callingObject = caller;
return self;
...
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
...
}
//and all the other NSURLConnection delegate methods
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
...
// finish building array of results into self.resultArray
[self.callingObject didGetCalledBack:self.resultArray];
}
Итак ...
1) Я думаю, что я должен использовать селекторы, или что-то еще, а не жестко кодировать тот факт, что вызывающая сторона (делегатор?) Должна реализовать - didGetCalledBack
:
Правильно? Если так, как? (и почему, кроме чистоты)
2) Или вся моя реализация неверна в том смысле, что я пытаюсь использовать обратный вызов от делегата NSURLConnection
обратно делегату неправильно?
Я посмотрел образец кода Apple и т. Д., Но ничего из того, что я видел, не имеет ничего, кроме delegate:self
. Возможно, я должен иметь делегат: self тоже для NSURLConnection
, но я делаю много соединений, и если я делаю делегирование: self, мои методы делегата (например, - didReceiveData
:) превращаются в большой беспорядок кода типа if (connection ==connection1){
.
спасибо,
ричард