我正在开发包含最新SDK和XCode 4.2的iOS 4应用程序。保留对象并将其释放给委托人
我有一个关于代表的问题,以及如何分配/释放对象给他们。
我的代码是:
#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];
而且,有我在的dealloc释放del
?
如果我使用
delegate = del;
,而不是
delegate = [del retain];
我得到的对象的dealloc一个EXC_BAD_ACCESS。
简而言之,我不确定我是否正确分配并释放对象del
。
这是正确的,它还值得一提的是,通常假定代表超出了它是代表的对象,或者这种模式发生故障。 – jrturton 2012-03-12 09:08:17
我已更新我的问题,并提供更多详细信息。如果我不保留del,我会得到一个错误。 – VansFannel 2012-03-12 09:22:54
你确定你没有在'UserWebService'对象之前释放委托对象吗? – Alexander 2012-03-12 09:29:28