скажем, если у вас есть класс, делающий что-то в другом потоке.И имеет свой делегат.
@protocol XRequestDelegate;
@interface XRequest : NSObject {
id<XRequestDelegate> delegate;
}
@property (nonatomic, retain) id<XRequestDelegate> delegate;
- (void) doSomething;
@end
@protocol XRequestDelegate <NSObject>
- (void)request:(XRequest *)request didFinish:(id)object;
- (void)request:(XRequest *)request didFailWithError:(NSError*)error;
@end
doSomething в конечном итоге вызывает либо request:didFinish:
, либо request:didFailWithError:
и позволяет использовать этот класс в нашем объекте;
- (void)doRequest
{
XRequest *request = [[XRequest alloc] init];
[request setDelegate:self];
[request doSomething];
}
- (void)request:(XRequest *)request didFinish:(id)object
{
// Use object whatever you want
[request release];
}
- (void)request:(XRequest *)request didFailWithError:(NSError *)error
{
//Log Error
[request release];
}
у нас есть экземпляр XRequest
выделено и в итоге выпущено методами.
Можно ли сказать, что это неправильный способ управления памятью.Должны ли мы расширить область действия XRequest
объекта?