¿Qué significa __OBJC__
en Objetivo C?__OBJC__ en el objetivo C
#import <Availability.h>
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif
¿Qué significa __OBJC__
en Objetivo C?__OBJC__ en el objetivo C
#import <Availability.h>
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif
Esto se parece a su archivo de encabezado precompilado.
El encabezado precompilado se comparte entre todos los archivos C-dialect de su proyecto. Es como si todos sus archivos .c, .cpp, .m y .mm tuvieran una directiva #include invisible como primera línea. Pero los archivos de encabezado de Cocoa son puro Objective C: tratar de incluirlos en una fuente de C/C++ no arrojará más que errores de sintaxis. Por lo tanto, el #ifdef.
Si su proyecto solo contiene archivos Objective C (.m/.mm), que es el caso típico, el #ifdef no es realmente necesario. Pero Xcode, que generó este encabezado en primer lugar, te protege de todos modos.
Incluso si no es un archivo PCH, este #ifdef solo tiene sentido si el archivo debe incluirse tanto en Objective C como en C/C++. Pero no duele, independientemente.
Es solo un símbolo de macro. En este caso, si ese símbolo está definido, su programa debería importar los marcos Apple Cocoa (Foundation y AppKit).
Este sería el caso si estuviera desarrollando una aplicación object-c/cocoa. En otras palabras, si estaba desarrollando una aplicación de C++/carbono, el símbolo OBJC no se definiría y los marcos dependientes de Object-C no se importarían.
Significa que se está utilizando el compilador Object C. De modo que puede crear archivos de encabezado híbridos que se pueden usar al compilar el objetivo C o C o C++.
Usted podría utilizarlo en un fichero de cabecera de este tipo, si desea publicar un archivo de cabecera que define un objeto c objetivo que quería poner a disposición de C y C++ programadores/Código:
#ifndef MYHEADER_H
#define MYHEADER_H
#ifdef __OBJC__
// Put objective C things in this block
// This is an objc object implemented in a .m or .mm file
@implementation some_objc_object {
}
@end
#endif
#ifdef __cplusplus
#define CLINKAGE "C"
// c++ things that .m or .c files wont understand go in here
// This class, in a .mm file, would be able to call the obj-c objects methods
// but present a c++ interface that could be called from c++ code in .cc or .cpp
// files
class SomeClassThatWrapsAnObjCObject
{
id idTheObject;
public:
// ...
};
#endif
// and here you can declare c functions and structs
// this function could be used from a .c file to call to a .m file and do something
// with the object identified by id obj
extern CLINKAGE somefunction(id obj, ...);
#endif // MYHEADER_H