我有两个控制器,SyncController和XMLController。 SyncController向XMLController发送一些参数,该参数连接到API并将结果作为对象包装在NSMutableArray中,然后将数组返回到SyncController。iPhone NSMutableArray发布问题
一些代码:
SyncController.h
-(void)urlHandler:(NSArray *)urlHandler listObjectsFinishedLoading:(NSMutableArray *)resultData;
SyncController.m
- (void)urlHandler:(NSArray *)urlHandler listObjectsFinishedLoading:(NSMutableArray *)resultData;
{
NSMutableArray *receivedObjects = [[NSMutableArray alloc] init];
[receivedObjects addObjectsFromArray:resultData];
for (Object *o in receivedObjects) {
//DO SOME STUFF
}
[receivedObjects release];
}
XMLController.h
@interface XMLController : NSObject {
NSMutableArray *objects;
}
@property (nonatomic, retain) NSMutableArray *objects;
XMLController.m
-(void) connectionDidFinishLoading:(NSURLConnection *) connection {
objects = [[NSMutableArray alloc] init];
if ([delegate respondsToSelector:@selector(urlHandler:listObjectsFinishedLoading:)]) {
[delegate urlHandler:self listObjectsFinishedLoading:objects];
}
//[objects release];
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
// Initialize an Object
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
// Put some properties unto Object
// Ad Object to the objects array
// release Object
}
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
//[objects release];
}
- (void)dealloc {
//[objects release];
[super dealloc];
}
我的问题是,我该如何正确释放对象数组?如果我不释放它,代码就可以正常工作(来自// DO SOME STUFF的动作被执行),但它显然会泄漏。如果我释放它,无论我做什么(请参阅评论// [对象发布];在三个地方)应用程序崩溃。
有什么建议吗?谢谢。
这个SO问题解释了为什么这可能是正确的答案:http://stackoverflow.com/questions/1219575/objective-c-release-autorelease-and-data-types – 2010-12-17 10:07:24
谢谢,但没有它不起作用。仍然崩溃。 – Dann 2010-12-17 10:08:35