¿Se corrigió la advertencia "Lexical o Preprocessor Issue – Extension used" en Xcode?

He henetworkingado un nuevo proyecto, que tiene varias advertencias de ciclo de retención causadas por la retención implícita de uno mismo dentro de varios bloques.

Al intentar solucionarlos, he escrito

__weak typeof(self) weakSelf = self; 

para crear una reference débil para su uso dentro del bloque.

Sin embargo, Xcode v. 5.1.1 está dando la advertencia críptica

 Lexical or Preprocessor Issue Extension used 

No me encuentro bien aquí … ¿qué significa esto y cómo puedo deshacerme de él?

Obtiene esta advertencia para el uso de typeof si "Advertencias pedantes" están habilitadas en la configuration de compilation. De la "Ayuda rápida" para esta configuration:

Descripción Emita todas las advertencias exigidas por estricto ISO C e ISO C ++; rechazar todos los progtwigs que usan extensiones prohibidas, y algunos otros progtwigs que no siguen ISO C e ISO C ++. Para ISO C, sigue la versión del estándar ISO C especificado por cualquier opción -std utilizada. [GCC_WARN_PEDANTIC, -pedantic]

No soy un experto en estándares (ISO) C, pero según https://gcc.gnu.org/onlinedocs/gcc/Typeof.html :

Si está escribiendo un file de encabezado que debe funcionar cuando está incluido en los progtwigs ISO C, escriba __typeof__ lugar de typeof . Ver palabras key alternativas.

y http://clang.llvm.org/docs/UsersManual.html :

El analizador reconoce " asm " y " typeof " como palabras key en los modos gnu *; las variantes " __asm__ " y " __typeof__ " se reconocen en todos los modos.

En su lugar, puede usar __typeof__ si no desea deshabilitar la advertencia:

 __weak __typeof__(self) weakSelf = self;