The point is that Xcode has no way to know that your project should link with Quartz Core Framework.
#import <QuartzCore/QuartzCore.h>
is not enough to say that you need Quartz Core Framework. You can write your own library which included a header file named QuartzCore.h
and put it under a folder named QuartzCore
. If it is in your include files searching path, it is OK to use, unless you also add the official Quartz Core Framework into your project (which leads to conflicts).
There are other examples. When you import a namespace in Visual Studio for a .NET project, it doesn't automatically add any assembly into "Reference" of your project. It's because you can add a third-party assembly as reference which has the same namespace. You also can add a different version of official .NET Framework assembly.