我有一个问题(在Objective-C / iPhone开发中),因为有一个多星期了,所以如果有人可以帮助我,我会非常感激。
当我从我编写的类中实例化一个对象时,它返回nil,但是当我启动调试模式时,我实际上在 init 方法中看到self的属性是正确的初始化,似乎它不执行返回自我指令。
编辑:
感谢您的回答这是初始代码
-(id)initWithDate:(NSString *)aDate
type:(NSString *)aType
amount:(NSString *)anAmount
currency:(NSString *)aCurrency
merchantName:(NSString *)aMerchant
status:(NSString *)aStatus
{
if (!(self = [super init])) return nil;
self->date=aDate;
self->type=aType;
self->amount=anAmount;
self->currency=aCurrency;
self->merchantName=aMerchant;
self->status=aStatus;
return self;
}
答案 0 :(得分:1)
我将您的代码放在以下
中
if (self = [super init]) {
// Custom initialization
}
return self;
而不是if(!(自我...返回nil你已经使用过。但这只是一种习惯。
我也会避免使用C ++样式' - >'赋值而是使用self.currency = aCurrency; (或[self setCurrency:aCurrency];这更接近我猜的c ++调用)假设这些被声明为@property或者有getter和setter。
我相信其中一个会帮助你!
答案 1 :(得分:1)
请勿使用self->instanceVariable
。
只需使用instanceVariable
。
答案 2 :(得分:0)
你应该写
self.date = aDate;
// etc....
如果在date
中将@property
等声明为@interface
,或者它只是一个类实例变量,请使用
date = aDate;
// etc...
此外,如果字符串未使用@property
或retain
修饰符声明为copy
,则您需要手动retain
它们:
date = [aDate retain];