Protocol Buffers - Google's data interchange format
===================================================

[![Build Status](https://travis-ci.org/google/protobuf.svg?branch=master)](https://travis-ci.org/google/protobuf)

Copyright 2008 Google Inc.

This directory contains the Objective C Protocol Buffers runtime library.

Requirements
------------

The Objective C implemention requires:

- Objective C 2.0 Runtime (32bit & 64bit iOS, 64bit OS X).
- Xcode 6.3 (or later).
- The library code does *not* use ARC (for performance reasons), but it all can
  be called from ARC code.

Installation
------------

The full distribution pulled from github includes the sources for both the
compiler (protoc) and the runtime (this directory).  To build the compiler
and run the runtime tests, you can use:

     $ objectivec/DevTools/full_mac_build.sh

This will generate the `src/protoc` binary.

Usage
-----

There are two ways to include the Runtime sources in your project:

Add `objectivec/\*.h` & `objectivec/GPBProtocolBuffers.m` to your project.

*or*

Add `objectivec/\*.h` & `objectivec/\*.m` except for
`objectivec/GPBProtocolBuffers.m` to your project.


If the target is using ARC, remember to turn off ARC (`-fno-objc-arc`) for the
`.m` files.

The files generated by `protoc` for the `*.proto` files (`\*.pbobjc.h' and
`\*.pbobjc.m`) are then also added to the target.

The Objective C classes/enums can be used from Swift code.

Objective C Generator Options
-----------------------------

**objc_class_prefix=\<prefix\>** (no default)

Since Objective C uses a global namespace for all of its classes, there can
be collisions.  This option provides a prefix that will be added to the Enums
and Objects (for messages) generated from the proto.  Convention is to base
the prefix on the package the proto is in.

Contributing
------------

Please make updates to the tests along with changes. If just changing the
runtime, the Xcode projects can be used to build and run tests.  If change also
require changes to the generated code, `objectivec/DevTools/full_mac_build.sh`
can be used to easily rebuild and test changes. Passing `-h` to the script will
show the addition options that could be useful.

Documentation
-------------

The complete documentation for Protocol Buffers is available via the
web at:

    https://developers.google.com/protocol-buffers/
