2011-01-19 1 views
2

私はこれを理解しようとしてきましたが、私が間違っていることを理解できません。Objective Cでクラスinitを呼び出すときにEXC_BAD_ACCESS

クラスを作成しましたが、初期化しようとするたびにEXC_BAD_ACCESSエラーが発生します。私は初期設定に入ることさえできません。

誰でも私が間違っていることを知っていますか?

User *myUser = [myUser init]; 

.hファイル:

#import <Foundation/Foundation.h> 


@interface User : NSObject { 
    long rowId; 
    NSString *email; 
    NSString *password; 
    NSString *fileVersion; 
} 

@property long rowId; 
@property (assign) NSString *email; 
@property (assign) NSString *password; 
@property (assign) NSString *fileVersion; 

@end 

.mファイル

#import "User.h" 


@implementation User 

@synthesize rowId, email, password, fileVersion; 

-(id)init { 

    self = [super init]; 
    return self; 
} 

@end 
+2

_assign_プロパティの内容と、なぜNSString *プロパティが_assign_であるのが一般的でないのかを理解してください(ヒント:通常は_copy_です)。 –

答えて

11

あなたは実際にオブジェクトに割り当てる必要があります:

User *myUser = [[User alloc] init]; 

releaseに忘れてはいけないし、それあなたがそれを使い終わったら。

+0

または、割り当て時に 'autorelease'します(その場合は、' alloc'/'init' /' autorelease'を行うヘルパークラスメソッドを書くのが普通です)。 –

+0

ありがとう、私はそれが何か明白であることを望んでいた。 – netrage