我正在開發包含最新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