ARC ivar fraco liberado antes de ser devolvido - ao construir para liberação, não depurar

Eu tenho uma classe que cria um objeto preguiçosamente e armazena como uma propriedade fraca. Outras classes podem solicitar este objeto, mas obviamente devem manter uma forte referência a ele para evitar que o objeto seja desalocado:

// .h
@interface ObjectManager
@property(nonatomic, weak, readonly) NSObject *theObject;
@end

// .m
@interface ObjectManager ()
@property(nonatomic, weak, readwrite) NSObject *theObject;
@end

@implementation ObjectManager
- (NSObject *)theObject
{
    if (!_theObject) {
        _theObject = [[NSObject alloc] init];
        // Perform further setup of _theObject...
    }
    return _theObject;
}
@end

Quando o esquema é definido como Xcode para compilar para Debug, as coisas funcionam bem - um objeto pode chamarobjectManagerInstance.theObject e voltetheObject.

Quando o esquema está configurado para construir para Release,theObject devolvenil:

// Build for Debug:
NSObject *object = objectManagerInstance.theObject;
// object is now pointing to theObject.

// Build for Release:
NSObject *object = objectManagerInstance.theObject;
// object is now `nil`.

Meu palpite é que o compilador está otimizando meu código, vendo que_theObject não é mais usado no próprio método do acessador, então a variável fraca está sendo definida comonil antes de retornar. Parece que eu teria que criar uma referência forte antes de realmente retornar a variável, o que eu só posso pensar em fazer usando um bloco, mas seria confuso e eu prefiro evitá-lo!

Existe algum tipo de palavra-chave que eu possa usar com o tipo de retorno para impedir que o ivar seja tão rápido?