Почему мой объект Objective-C не хочет создаваться? - PullRequest
1 голос
/ 13 января 2010

У меня проблема (в Objective-C / iPhone dev) уже более недели, поэтому я был бы очень признателен, если кто-нибудь может мне помочь.

Когда я создаю экземпляр объекта из написанного мной класса, он возвращает мне nil, но когда я запускаю режим отладки, я на самом деле вижу в методе init , что атрибуты self правильно инициализируются и кажется, что он не выполняет инструкцию возврата себя.

EDIT:

Спасибо за ваши ответы. Вот код инициализации

-(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;
}

Ответы [ 3 ]

1 голос
/ 13 января 2010

Не используйте self->instanceVariable.

Просто используйте instanceVariable.

1 голос
/ 13 января 2010

Я бы поместил ваш код в следующее

if (self = [super init]) { // Custom initialization } return self;

вместо if (! (Self ... return nil, который вы использовали. Но это просто привычка.

Я бы также избегал назначения в стиле C ++ '->' и вместо этого использовал бы self.currency = aCurrency; (или [self setCurrency: aCurrency]; что ближе к вызовам c ++, я думаю), предполагая, что они объявлены как @property или имеют методы получения и установки.

Я уверен, что один из них поможет тебе!

0 голосов
/ 13 января 2010

Вы должны написать

self.date = aDate;
// etc.... 

, если date и т. Д. Объявлены как @property в @interface, или если это просто переменная экземпляра класса, используйте

date = aDate;
// etc...

Кроме того, если строки не объявлены как @property с модификаторами retain или copy, вам необходимо вручную retain их таким образом:

date = [aDate retain];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...