The problem is that you have defined the implementation of the class XYZFlipsideViewController
twice, and the linker can't figure out which definition you meant:
duplicate symbol _OBJC_METACLASS_$_XYZFlipsideViewController
The two places it is defined in are these two object files:
XYZAppDelegate.o
XYZFlipsideViewController.o
There are two possible explanations:
- You have a
@implementation XYZFlipsideViewController ... @end
block in both of the source filesXYZAppDelegate.m
andXYZFlipsideViewController.m
, or - You have the
@implementation ... @end
block inside a header file which is#include
/#import
ed by both of those source files
In the first case, the solution is to remove one of the @implementation
blocks. In the second case, the solution is to move the @implementation
block from the header into the source file, but keep the @interface
block in the header file.
It's important to understand the distinction between @interface
and @implementation
-- the former says "Here is the name of a class, the names of its instance variables, and the names of its member functions", whereas the latter says "Here are all the definitions of the class's properties and member functions".