开发者

Error because of size of function in Objective-C

开发者 https://www.devze.com 2023-02-09 22:20 出处:网络
I am having a weird error message when i try to build my application for device: {standard input}:3884:invalid offset, value too big (0x00000408)

I am having a weird error message when i try to build my application for device:

{standard input}:3884:invalid offset, value too big (0x00000408)
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1

the class that issued this error message contains a function that has a huge switch statement with contains other switch statements in its cases. It is almost 1200 lines long!!

When i commented this function out the compilations was complete. So i predict this is whats meant by " value too big" in the error message above, correct me if am wrong.

Now how do i get over this limitation? I am thinking of a way to break my function into different parts and implement them in categories of the class in different files. But am not sure it is gonna be that easy as the function only contains switch statements within a huge statement. I will look at this fur开发者_如何学编程ther but does any one else have any other suggestion?

Cheers AF


Firstly, if you're using xcodebuild directly try building via the IDE as some reports seem to suggest this can help, unlikely though that may sound.

Secondly, if this is a compiler bug (it sounds like it is and there are quite a few similar reports on the hyperinternetweb), you could also try switching to using LLVM (via your projects "Compiler version" settings) and see if that makes a difference.

Finally, you could simply avoid the issue by using an if/else construct instead, painful though that will be.

UPDATE

To try out LLVM (instead of gcc), select your project's build target from the "Targets" section in the Groups & Files area, alt-click and select "Get info". In the window that appears then select the Build tab (if it's not already selected) and scroll down to the "C/C++ Compiler Version" setting within the Compiler Version category. You then then choose to use "LLVM compiler" instead of gcc.

0

精彩评论

暂无评论...
验证码 换一张
取 消