точечная запись с динамическим свойством - PullRequest
0 голосов
/ 02 августа 2011

У меня есть следующий класс, который я использую для хранения основных данных.

@interface CVMessage : NSManagedObject {
    NSString * message;
}

@property (nonatomic, retain) NSNumber * date_created;
@property (nonatomic, retain) NSString * message;
@property (nonatomic, retain) NSNumber * mid;
@property (nonatomic, retain) CVLogin * creator;
@property (nonatomic, retain) NSSet * stars;
@property (nonatomic, retain) NSSet * embeds;
@property (nonatomic, retain) CVTopic * topic;
@property (nonatomic, assign) BOOL options;

@end

@implementation CVMessage
@synthesize options;
@dynamic message;
@dynamic mid;
@dynamic creator;
@dynamic date_created;
@dynamic embeds;
@dynamic stars;
@dynamic topic;

Я хотел бы иметь возможность сделать что-то вроде:

CVMessage * mes = [CVMessage new]; mes.message = @ "некоторый текст";

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

-(void)setMessage:(NSString *) newMessage
{
    if (self.message != newMessage)
    {
        [self.message release];
        [newMessage retain];
        self.message = newMessage;
    }
}

Это дает мне ошибку при запуске. Я что-то упустил?

1 Ответ

3 голосов
/ 02 августа 2011

self.message = newMessage - это то же самое, что и [self setMessage:newMessage], поэтому вы, вероятно, получаете бесконечную рекурсию, и ошибка, вероятно, является переполнением стека.

Просто получите доступ к переменной напрямую:

-(void)setMessage:(NSString *) newMessage
{
    if (self.message != newMessage)
    {
        [message release];
        message = [newMessage retain];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...