Более или менее гарантировано, что .representations содержит NSImageRep * (конечно, не всегда NSBitmapImageRep). Чтобы быть в безопасности для будущих расширений, можно написать что-то вроде кода ниже. И это также учитывает множественное представление (как в некоторых файлах .icns и .tiff).
@implementation NSImage (Extension)
- (void) makePixelSized {
NSSize max = NSZeroSize;
for (NSObject* o in self.representations) {
if ([o isKindOfClass: NSImageRep.class]) {
NSImageRep* r = (NSImageRep*)o;
if (r.pixelsWide != NSImageRepMatchesDevice && r.pixelsHigh != NSImageRepMatchesDevice) {
max.width = MAX(max.width, r.pixelsWide);
max.height = MAX(max.height, r.pixelsHigh);
}
}
}
if (max.width > 0 && max.height > 0) {
self.size = max;
}
}
@end