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

まあ、私はしばらくの間これに固執しました。可能であれば、NS操作の基本的な例に関するリソース、記事などはありますか?

4

1 に答える 1

1

あなたのメインメソッドでは、あなたが呼び出していますNSLog(self.str)- あなたが渡すオブジェクトが文字列の場合、これは機能しますが、他のオブジェクトを試して記録し続けると機能しません. NSLog は、フォーマット文字列をパラメーターとして受け取ります。コメントされたコードの一部にいるようNSLog(self)に、self が文字列ではない場合、文字列が必要なためクラッシュします。%@ を実行NSLog(@"self: %@", self)すると、オブジェクトdescriptionメソッドによって返された文字列が出力されます。

それ以外は、あなたの init メソッドは問題ないように見えますが、このオブジェクトのインスタンスをどのように正確に作成していますか? そのコードを見せていただけますか?問題はそこにあるかもしれません。

于 2010-02-18T10:35:37.213 に答える