【问题标题】:EXC_BAD_ACCESS when calling class init in Objective C在Objective C中调用类init时的EXC_BAD_ACCESS
【发布时间】:2011-01-19 22:59:33
【问题描述】:

我一直在试图解决这个问题,但我无法弄清楚我做错了什么。

我编写了一个类,每当我尝试初始化它时,都会收到 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

【问题讨论】:

  • 一定要了解什么是 assign 属性,以及为什么 NSString* 属性不常见为 assign(提示:它们通常是 复制)。

标签: iphone objective-c


【解决方案1】:

你必须实际分配对象:

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

用完后别忘了release它。

【讨论】:

  • autorelease在分配时分配它(在这种情况下,通常编写一个辅助类方法来执行alloc/init/autorelease)。
  • 谢谢,我希望这是显而易见的。
猜你喜欢
  • 2019-06-23
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 1970-01-01
  • 2021-03-12
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
相关资源
最近更新 更多