Я занимаюсь разработкой приложения для iOS 4 с последними SDK и XCode 4.2.
У меня вопрос о делегатах и о том, как назначать / освобождать объекты для них.
Мой код:
#import <Foundation/Foundation.h>
#import "SBJson.h"
#import "WebServiceDelegate.h"
@interface UserWebService : NSObject
{
SBJsonParser* parser;
NSURLRequest* request;
NSMutableData* receivedData;
NSInteger response;
id<WebServiceDelegate> delegate;
}
@property (nonatomic, readonly) NSInteger response;
- (id)initWithDelegate:(id<WebServiceDelegate>)del;
И его реализация:
#import "UserWebService.h"
@implementation UserWebService
@synthesize response;
- (id)initWithDelegate:(id<WebServiceDelegate>)del
{
if (self = [super init])
{
delegate = [del retain];
parser = [[SBJsonParser alloc] init];
}
return self;
}
-(void)dealloc
{
[parser release];
[request release];
[receivedData release];
[super dealloc];
}
Это правильно?
delegate = [del retain];
И, я должен выпустить del
в dealloc?
Если я использую
delegate = del;
вместо
delegate = [del retain];
, я получаю EXC_BAD_ACCESS для объекта dealloc.
В двух словах,Я не уверен, правильно ли я назначил и выпустил объект del
.