我有两个类,一个是Sample类和ServerConnection类。
sample.m
.
.
ServerConnection *serverConnection = [[ServerConnection alloc]init:val1 _handler:serverConnectionHandler _connectionURL:url];
// [NSThread detachNewThreadSelector:@selector(run) toTarget:serverConnection withObject:NULL];
[serverConnection performSelectorInBackground:@selector(run) withObject:NULL];
在serverConnection中,我只有两种方法 ServerConnection.h
@interface ServerConnection : NSObject
{
// NSString* url;
// Handler* handler;
// int action_code;
}
@property (nonatomic,retain) NSString* url;
@property (nonatomic,retain) Handler* handler;
@property (nonatomic,retain) NSNumber* action_code;
-(id) init:(int)_action_code _handler:(Handler *)_handler _connectionURL:(NSString *)_connectionURL;
-(void)run;
ServerConnection.m
- (id) init:(int)_action_code _handler:(Handler *)_handler _connectionURL:(NSString *)_connectionURL{
if (self = [super init]) {
action_code = 0;
action_code = [[NSNumber alloc]initWithInt:_action_code];
handler = [[Handler alloc]init:_handler];
url = [[NSString alloc]initWithString:_connectionURL];
}
return self;
}
-(void)run
{
NSLog(@"url--> %@",url);
//Here using NSURLConnection to fetch data from server
}
当运行方法启动时,我会收到此错误,有时过多的错误访问,并在启用zombie后显示此错误消息 - [CFString release]:发送到解除分配的实例0xf9978d0的消息 * 和 对象0x11039420的 ** malloc: 错误:未分配被释放的指针 在malloc_error_break中设置断点以进行调试**
我推荐旧帖并尝试解决但仍然面临同样的问题。有人请指出我在哪里做错了吗?
答案 0 :(得分:1)
我的url
ivar没有看到任何错误。这是你的整个代码吗?什么是ServerConnection
生命周期?星期一早上可能是我没有看到任何可疑的原因......几乎没有其他评论...
action_code = 0;
行没用,因为您在下一行分配了NSNumber
。 action_code
为NSNumber
,因此,即使您要为其指定0,也应该写action_code = @( 0 )
。
另外,样式... action_code
应命名为actionCode
。 init...
方法应如下所示:
- (id)initWithActionCode:(int)actionCode handler:(Handler *)handler connectionURL:(NSString *) connectionURL {
if (self = [super init]) {
应该看起来像if ( ( self = [super init] ) ) {
或使用两个班轮:
self = [super init];
if ( self ) {
您应该改进自己的风格,让其他人更容易理解您的代码。