1<html lang="en"> 2<head> 3<title>Modern GNU Objective-C runtime API - Using the GNU Compiler Collection (GCC)</title> 4<meta http-equiv="Content-Type" content="text/html"> 5<meta name="description" content="Using the GNU Compiler Collection (GCC)"> 6<meta name="generator" content="makeinfo 4.13"> 7<link title="Top" rel="start" href="index.html#Top"> 8<link rel="up" href="GNU-Objective_002dC-runtime-API.html#GNU-Objective_002dC-runtime-API" title="GNU Objective-C runtime API"> 9<link rel="next" href="Traditional-GNU-Objective_002dC-runtime-API.html#Traditional-GNU-Objective_002dC-runtime-API" title="Traditional GNU Objective-C runtime API"> 10<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> 11<!-- 12Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 131998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 142010 Free Software Foundation, Inc. 15 16Permission is granted to copy, distribute and/or modify this document 17under the terms of the GNU Free Documentation License, Version 1.3 or 18any later version published by the Free Software Foundation; with the 19Invariant Sections being ``Funding Free Software'', the Front-Cover 20Texts being (a) (see below), and with the Back-Cover Texts being (b) 21(see below). A copy of the license is included in the section entitled 22``GNU Free Documentation License''. 23 24(a) The FSF's Front-Cover Text is: 25 26 A GNU Manual 27 28(b) The FSF's Back-Cover Text is: 29 30 You have freedom to copy and modify this GNU Manual, like GNU 31 software. Copies published by the Free Software Foundation raise 32 funds for GNU development.--> 33<meta http-equiv="Content-Style-Type" content="text/css"> 34<style type="text/css"><!-- 35 pre.display { font-family:inherit } 36 pre.format { font-family:inherit } 37 pre.smalldisplay { font-family:inherit; font-size:smaller } 38 pre.smallformat { font-family:inherit; font-size:smaller } 39 pre.smallexample { font-size:smaller } 40 pre.smalllisp { font-size:smaller } 41 span.sc { font-variant:small-caps } 42 span.roman { font-family:serif; font-weight:normal; } 43 span.sansserif { font-family:sans-serif; font-weight:normal; } 44--></style> 45<link rel="stylesheet" type="text/css" href="../cs.css"> 46</head> 47<body> 48<div class="node"> 49<a name="Modern-GNU-Objective-C-runtime-API"></a> 50<a name="Modern-GNU-Objective_002dC-runtime-API"></a> 51<p> 52Next: <a rel="next" accesskey="n" href="Traditional-GNU-Objective_002dC-runtime-API.html#Traditional-GNU-Objective_002dC-runtime-API">Traditional GNU Objective-C runtime API</a>, 53Up: <a rel="up" accesskey="u" href="GNU-Objective_002dC-runtime-API.html#GNU-Objective_002dC-runtime-API">GNU Objective-C runtime API</a> 54<hr> 55</div> 56 57<h4 class="subsection">8.1.1 Modern GNU Objective-C runtime API</h4> 58 59<p>The GNU Objective-C runtime provides an API which is similar to the 60one provided by the “Objective-C 2.0” Apple/NeXT Objective-C 61runtime. The API is documented in the public header files of the GNU 62Objective-C runtime: 63 64 <ul> 65<li><samp><span class="file">objc/objc.h</span></samp>: this is the basic Objective-C header file, 66defining the basic Objective-C types such as <code>id</code>, <code>Class</code> 67and <code>BOOL</code>. You have to include this header to do almost 68anything with Objective-C. 69 70 <li><samp><span class="file">objc/runtime.h</span></samp>: this header declares most of the public runtime 71API functions allowing you to inspect and manipulate the Objective-C 72runtime data structures. These functions are fairly standardized 73across Objective-C runtimes and are almost identical to the Apple/NeXT 74Objective-C runtime ones. It does not declare functions in some 75specialized areas (constructing and forwarding message invocations, 76threading) which are in the other headers below. You have to include 77<samp><span class="file">objc/objc.h</span></samp> and <samp><span class="file">objc/runtime.h</span></samp> to use any of the 78functions, such as <code>class_getName()</code>, declared in 79<samp><span class="file">objc/runtime.h</span></samp>. 80 81 <li><samp><span class="file">objc/message.h</span></samp>: this header declares public functions used to 82construct, deconstruct and forward message invocations. Because 83messaging is done in quite a different way on different runtimes, 84functions in this header are specific to the GNU Objective-C runtime 85implementation. 86 87 <li><samp><span class="file">objc/objc-exception.h</span></samp>: this header declares some public 88functions related to Objective-C exceptions. For example functions in 89this header allow you to throw an Objective-C exception from plain 90C/C++ code. 91 92 <li><samp><span class="file">objc/objc-sync.h</span></samp>: this header declares some public functions 93related to the Objective-C <code>@synchronized()</code> syntax, allowing 94you to emulate an Objective-C <code>@synchronized()</code> block in plain 95C/C++ code. 96 97 <li><samp><span class="file">objc/thr.h</span></samp>: this header declares a public runtime API threading 98layer that is only provided by the GNU Objective-C runtime. It 99declares functions such as <code>objc_mutex_lock()</code>, which provide a 100platform-independent set of threading functions. 101 102 </ul> 103 104 <p>The header files contain detailed documentation for each function in 105the GNU Objective-C runtime API. 106 107<!-- ========================================================================= --> 108 </body></html> 109 110