NSArray de referências fracas (__unsafe_unretained) para objetos em ARC

Preciso armazenar referências fracas para objetos em um NSArray, para evitar ciclos de retenção. Não tenho certeza da sintaxe apropriada para usar. Esta é a forma correta

Foo* foo1 = [[Foo alloc] init];
Foo* foo2 = [[Foo alloc] init];

__unsafe_unretained Foo* weakFoo1 = foo1;
__unsafe_unretained Foo* weakFoo2 = foo2;

NSArray* someArray = [NSArray arrayWithObjects:weakFoo1, weakFoo2, nil];

Observe que eu preciso oferecer suporte ao iOS 4.x, Então, o__unsafe_unretained ao invés de__weak.

EDITA (2015-02-18):

Para aqueles que querem usar o verdadeiro__weak ponteiros (não__unsafe_unretained), verifique esta pergunta: Coleções de zerar referências fracas sob ARC

questionAnswers(2)

yourAnswerToTheQuestion