ABTableViewCell и добавление изображения - PullRequest
0 голосов
/ 19 июня 2011

Для просмотра в приложении для iPhone я использую подкласс ABTableViewCell (https://github.com/enormego/ABTableViewCell).). Это довольно простая ячейка, но я хотел использовать ее для нужной мне скорости прокрутки, потому что много из них можно в таблице сразу.

Вот заголовок файла:

@interface WHUserTableViewCell : ABTableViewCell {

    NSString* Name;
    NSString* DetailsText;
    UIImage*  UserImage;

}

@property (nonatomic, copy) NSString* Name;
@property (nonatomic, copy) NSString* DetailsText;
@property (nonatomic, copy) UIImage* UserImage;

Я знаю, что используя «копию» на изображении, я поддерживаю только iOS 4.2 и выше, но это можно исправить позже.

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

- (void) setUserImage:(UIImage *) userImage
{
    [UserImage release];
    UserImage = [userImage copy];
    [self setNeedsDisplay];
}

- (void) setName:(NSString *) name
{
    [Name release];
    Name = [name copy];
    [self setNeedsDisplay];
}

- (void) setDetailsText:(NSString *) detailsText
{
    [DetailsText release];
    DetailsText = [detailsText copy];
    [self setNeedsDisplay];
}

Изображения, назначенные свойству UserImage, поступают из класса Singleton, который обеспечивает кэширование и загрузку изображений. Так что этот класс должен быть «владельцем» изображений.

Существует только одна проблема, когда ячейка освобождается, и я освобождаю все свойства, в которых происходит сбой приложения в строке [UserImage release], вот мой метод dealloc:

- (void)dealloc
{
    [super dealloc];

    [UserImage release];
    [Name release];
    [DetailsText release];
}

В этой ячейке используется пользовательский рисунок, как об этом рассказывает AteBits в своем знаменитом сообщении в блоге. Какой правильный и самый быстрый способ обработки изображений для этого. Я хотел бы продолжить использовать мой класс кэширования / загрузки синглтона для обработки изображений, но я не думаю, что это является источником проблемы, так как я копирую объекты изображений.

1 Ответ

1 голос
/ 19 июня 2011

[super dealloc]; должна быть последней строкой - (void)dealloc.

Похожие: Почему я должен вызывать super -dealloc последним, а не первым?

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