| # Objective C example | |
| This example shows how to use ffigen to generate bindings for an Objective C | |
| library. It uses the AVFAudio framework to play audio files. | |
| ``` | |
| dart play_audio.dart test.mp3 | |
| ``` | |
| ## Config notes | |
| The ffigen config for an Objective C library looks very similar to a C library. | |
| The most important difference is that you must set `language: objc`. If you want | |
| to filter which interfaces are included you can use the `objc-interfaces:` | |
| option. This works similarly to the other filtering options. | |
| It is recommended that you filter out just about everything you're not | |
| interested in binding (see the ffigen config in [pubspec.yaml](./pubspec.yaml)). | |
| Virtually all Objective C libraries depend on Apple's internal libraries, which | |
| are huge. Filtering can reduce the generated bindings from millions of lines to | |
| tens of thousands. | |
| In this example, we're only interested in `AVAudioPlayer`, so we've filtered out | |
| everything else. But ffigen will automatically pull in anything referenced by | |
| any of the fields or methods of `AVAudioPlayer`, so we're still able to use | |
| `NSURL` etc to load our audio file. | |
| ## Generating bindings | |
| At the root of this example (`example/objective_c`), run: | |
| ``` | |
| dart run ffigen | |
| ``` | |
| This will generate [avf_audio_bindings.dart](./avf_audio_bindings.dart). |