0

嗨,我遇到了 NSOperation 的一些问题。我总是在self = [super init];(已经使用断点找到它)出错它总是返回“程序接收信号:EXC_BAD_ACCESS”

//AddThread.h
@interface AddThread : NSOperation
{
    NSString * str;
}
@property (nonatomic,retain) NSString * str;
-(id) initWithString:(NSString *) tmpStr;
@end

对于.m

//AddThread.m
#import "AddThread.h"
@implementation AddThread
@synthesize str;
- (id) initWithString:(NSString *)tmpStr
{
    self = [super init];
    if (self != nil)
    {
        self.str = tmpStr;
    }
    //NSLog(self);
    //[super init];
        return self;
}
- (void) main
{
    NSLog(self.str);
}
- (void) dealloc{
    [str release];
    str = nil;
    [super dealloc];
}
@end

好吧,我坚持了一段时间,如果可能的话,有任何资源,文章内容是 NSoperation 的基本示例吗?

4

1 回答 1

1

在您的主要方法中,您正在调用NSLog(self.str)- 如果您传入的对象是字符串,这将起作用,但如果您继续尝试记录其他对象,它将不起作用。NSLog 将格式字符串作为参数。如果您只是NSLog(self)喜欢在一些注释代码中,并且 self 不是字符串,它会崩溃,因为它需要一个字符串。您应该这样做NSLog(@"self: %@", self)%@ 将打印出对象description方法返回的字符串。

除此之外,您的 init 方法看起来不错,您究竟是如何创建该对象的实例的?你能展示一下代码吗?问题可能就在那里。

于 2010-02-18T10:35:37.213 回答