Для просмотра в приложении для 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 в своем знаменитом сообщении в блоге. Какой правильный и самый быстрый способ обработки изображений для этого. Я хотел бы продолжить использовать мой класс кэширования / загрузки синглтона для обработки изображений, но я не думаю, что это является источником проблемы, так как я копирую объекты изображений.