2010-02-18 5 views
0

Salut j'ai eu un problème avec NSOperation. J'ai toujours eu une erreur à "self = [super init];" (Déjà utiliser le point de rupture pour trouver cela) il retourne toujours "le signal recieved du programme: EXC_BAD_ACCESS" tout le tempsNewbie question: NSOperation pour iphone SDK

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

et pour .m

//AddThread.m
#import "AddThread.h"

@implementation AddThread @synthesize str;
- (id) initWithString: (NSString *) tmpStr
{
self = [super init];
si (auto! = Nil)
{
self.str = tmpStr;
}
// NSLog (auto-);
// [super init];
retournez-vous;
}
- (void) principale
{
NSLog (self.str);
}
- (vide) dealloc {
[libération de str];
str = nil;
[super dealloc];
}
@end

Eh bien, je coincé avec cela pour tout et si posssible toutes les ressources, les choses articles par exemple de base de NSOperation?

Répondre

1

Dans votre méthode principale, vous appelez NSLog(self.str) - Bien que cela fonctionne si l'objet que vous transmettez est une chaîne, cela ne fonctionnera pas si vous continuez à essayer d'enregistrer d'autres objets. NSLog prend une chaîne de format en paramètre. Si vous faites juste NSLog(self) comme si vous étiez dans certains de vos codes commentés, et que self n'est pas une chaîne, il va planter car il attendait une chaîne. Vous devriez faire NSLog(@"self: %@", self) le% @ affichera la chaîne renvoyée par une méthode description objets.

Autre que cela, votre méthode init semble bien, comment exactement créez-vous une instance de cet objet? Pourriez-vous montrer le code pour cela? Le problème peut être là.