Вопрос новичка: NSOperation для iphone SDK - PullRequest
0 голосов
/ 18 февраля 2010

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

// AddThread.h
@interface AddThread: NSOperation
{
NSString * str;
}
@ свойство (неатомное, сохраняемое) NSString * str;
- (id) initWithString: (NSString *) tmpStr;
@ конец

и для .m

// AddThread.m
#import "AddThread.h"
@ реализация AddThread
@ synthesize str;
- (id) initWithString: (NSString *) tmpStr
{
self = [super init];
if (self! = Nil)
{
self.str = tmpStr;
}
// NSLog (self);
// [super init];
вернуть себя;
}
- (void) main
{
NSLog (self.str);
}
- (void) dealloc {
[str release];
ул = ноль;
[super dealloc];
}
@ конец

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

1 Ответ

1 голос
/ 18 февраля 2010

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

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

...