Strange issue after upgrading to iOS 4.1 SDK

I've upgraded the iOS SDK to the newly released 4.1 and now I have the following error while building my app:

/DeveloperBeta/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFContext.h:60:23     

/DeveloperBeta/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFContext.h:60:23: error: expected function body after function declarator

Looking at that line in the .h file I see the following:

CG_EXTERN void CGPDFContextAddDocumentMetadata(CGContextRef context, CFDataRef metadata) CG_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_0);

The really interesting thing is the define __MAC_10_7 which appears not to be defined anywhere. I get this error when pre-compiling the .pch file of my app.

What's curious is that a simple hello world app compiles.

Any idea what can I do?

Thanks in advance!

Stelian


This is a known bug with the iOS 4.1 SDK and building using LLVM for the iPhone Simulator. You can read all about it in this thread on Apple's Developer Forums.

The recommended solution is to add the following to Other C Flags in your project's build settings: -D__IPHONE_OS_VERSION_MIN_REQUIRED=040100 where you replace 040100 with your deployment target version (030000 for 3.0, for example).


I have this problem when using the LLVM compiler. Try recompiling using GCC and the problem (for me) goes away.

I'll keep investigating to determine if it is a general toolchain issue or if it's specific to my configuration.

--update:

So it looks like an issue with CLANG. LLVM GCC 4.2 works fine.

I still think it is likely a problem with my configuration. Even an empty project will not compile under LLVM CLANG 1.5 for me.

--update 2:

So it seems that the minimum required version setting is not being honoured in the project info settings. I've manually set it via:

Other C Flags: -D__IPHONE_OS_VERSION_MIN_REQUIRED=031300

(for minimum of iOS 3.1, obviously - if you require a later version then you can use 040100 for version 4.0)

It does seem only to be a simulator problem with CLANG/LLVM. Compiling for the device directly seems to work just fine.