您好我在NSOperation遇到了一些问题。 我总是在“self = [super init]”中得到错误;“ (已经使用断点来找到这个) 它始终返回“程序接收信号:EXC_BAD_ACCESS”
// AddThread.h
@interface AddThread:NSOperation
{
NSString * str;
}
@property(非原子,保留)NSString * str;
- (id)initWithString:(NSString *)tmpStr;
@end
和.m
好吧,我坚持这一点,如果可能的任何资源,文章的事情为NSoperation的基本例子?// AddThread.m
#import“AddThread.h”
@implementation AddThread
@synthesize str;
- (id)initWithString:(NSString *)tmpStr
{
self = [super init];
如果(自我!=无)
{
self.str = tmpStr;
}
// NSLog(个体经营);
// [super init];
回归自我;
}
- (无效)主要
{
NSLog(self.str);
}
- (void)dealloc {
[str release];
str = nil;
[超级dealloc];
}
@end
答案 0 :(得分:1)
在main方法中,您正在调用NSLog(self.str)
- 如果您传入的对象是字符串,这将起作用,如果您继续尝试并记录其他对象,它将无法工作。 NSLog将格式字符串作为参数。如果你只是像NSLog(self)
那样在你的一些注释代码中,并且self不是一个字符串,那么它会崩溃,因为它需要一个字符串。您应该NSLog(@"self: %@", self)
%@将打印出对象description
方法返回的字符串。
除此之外,你的init方法看起来很好,你究竟是如何创建这个对象的实例的呢?你能展示一下代码吗?问题可能出在那里。