【发布时间】:2010-10-15 21:34:54
【问题描述】:
我在 DNS.h 中有这个类
@interface DNS : NSObject <NSXMLParserDelegate, NSNetServiceDelegate> {
NSMutableArray *servsPublished;
}
@property(nonatomic, retain) NSMutableArray *servsPublished;
然后在实现文件 DNS.m 中有一个方法可以释放它,我得到 exec bad access memory 错误。这是方法,它符合 NSXMLParserDelegate 协议
-(void) parserDidEndDocument:(NSXMLParser *)parser {
NSNetService *client;
for (NSDictionary *aService in servToPublish) {
client = [[NSNetService alloc] initWithDomain:@"local"
type:[aService objectForKey:@"serviceType"]
name:[aService objectForKey:@"name"]
port: [(NSNumber *)[aService objectForKey:@"port"] intValue]];
[client setDelegate: self];
[client publish];
//release this service and the client
[aService release];
//[client release];
}
//free the array of Dictionary containing the services
[servToPublish release];
}
也许第一个想法是nil,但实际上我在方法中使用它检查是否为nil,然后释放它。
它与保留属性有关吗? 谢谢。
【问题讨论】:
-
释放 nil 不会有问题——显然你可以向 nil 发送任何消息。您能否在初始化和释放 servsPublished 变量的位置发布代码?
-
显示你发布“it”的代码
-
@Robot,是的,我说了什么不同的东西吗?
-
你没有。我误读了你的评论。对不起。
-
我刚刚用释放 servToPublish 属性的方法编辑了我的问题
标签: objective-c release release-management retaincount