Странное поведение при декодировании NSArray через NSSecureCoding

Я провел весь день, стуча головой о стену, пытаясь понять, почему расшифровка этого класса не удалась. класс имеет свойство, которое является NSArray объектов Foo. Foo соответствует NSSecureCoding, и я успешно сам кодировал и декодировал этот класс. я получаю ошибку в initWithCoder: это говорит о том, что не удалось декодировать класс Foo. В результате некоторых экспериментов я обнаружил, что мне нужно добавить [класс Foo] в initWithCoder: чтобы он работал. может быть, это поможет кому-то еще, кто имеет ту же проблему. мой вопрос, зачем это нужно? я не нашел предположения, что это необходимо в документации Apple.

#import "Foo.h"

@interface MyClass : NSObject <NSSecureCoding>
@property (nonatomic) NSArray *bunchOfFoos;
@end

@implementation MyClass

static NSString *kKeyFoo = @"kKeyFoo";

+ (BOOL) supportsSecureCoding
{
    return YES;
}

- (void) encodeWithCoder:(NSCoder *)encoder
{
    [encoder encodeObject:self.bunchOfFoos forKey:kKeyFoo];
}

- (id) initWithCoder:(NSCoder *)decoder
{
    if (self = [super init])
    {
        [Foo class]; // Without this, decoding fails
        _bunchOfFoos = [decoder decodeObjectOfClass:[NSArray class] forKey:kKeyFoo];
    }
    return self;
}

@end

Ответы на вопрос(3)

Ваш ответ на вопрос