2010-02-18 4 views
0

Привет У меня возникла проблема с NSOperation. Я всегда получал ошибку при «self = [super init];» (Уже используют точку останова, чтобы найти это) он всегда возвращается "Программа получила сигнал: EXC_BAD_ACCESS" все времяВопрос для новичков: NSOperation для iphone SDK

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

и .m

//AddThread.m
#import "AddThread.h"
@implementation AddThread
@synthesize ул;
- (id) initWithString: (NSString *) tmpStr
{
self = [super init];
if (self! = Nil)
{
self.str = tmpStr;
}
// NSLog (self);
// [super init];
return self;
}
- (недействительными) Главный
{
NSLog (self.str);
}
- (void) dealloc {
[str release];
str = nil;
[super dealloc];
}
@end

хорошо я застрял с этим на некоторое время, и если posssible любые ресурсы, статьи вещи для базового примера NSOperation?

ответ

1

В вашем основном методе вы вызываете NSLog(self.str). Пока это будет работать, если объект, который вы передаете, является строкой, он не будет работать, если вы продолжите попытку и запишите другие объекты. NSLog принимает строку формата в качестве параметра. Если вы просто делаете NSLog(self), как в каком-то из прокомментированного кода, а сам не является строкой, он выйдет из строя, потому что он ожидает строку. Вы должны сделать NSLog(@"self: %@", self)% @ распечатает строку, возвращаемую объектами description.

Кроме этого, метод init отлично выглядит, как именно вы создаете экземпляр этого объекта? Не могли бы вы показать код для этого? Проблема может быть там.