suppress instance method override linker warning framework xcode

后端 未结 2 531
后悔当初
后悔当初 2021-01-01 12:32

I have a library that started throwing a couple linker warnings under XCode 4.4. The warnings are along the lines of \"ld: warning: instance method \'methodName:\' in catego

相关标签:
2条回答
  • 2021-01-01 12:47

    If an option for hiding that warning exists it would be under:

    Project Navigator(the file list on the left )-> [Project name](the one with the blue icon) -> Build Settings -> Apple LLVM compiler 3.1 - Warnings

    Also:

    In Xcode, how to suppress all warnings in specific source files?

    0 讨论(0)
  • 2021-01-01 12:53

    There are two options I have come up with by adding flags to "Other Linker Flags" in the Xcode build settings area:

    1) Adding -Xlinker -w will suppress all linker warnings, no matter the type (this is the -w flag to ld(1)). Obviously that will quiet this particular warning, but all other ld warnings as well.

    2) Adding -Xlinker -no_objc_category_merging will skip the optimization step where the linker combines all category methods into the base class during linking, which would then occur at runtime instead. Tiny bit slower on startup probably, but it would probably still be faster than method swizzling at runtime, and since it is during this step that ld(1) issues the warning, it will skip that too.

    It appears that ld does not have a way to surgically suppress any individual warning the way the compiler does, although it has specialty flags for a couple of them or groups of them (none of which help with this one). Neither solution above is probably recommended for production code, but in some situations, one or the other might help.

    0 讨论(0)
提交回复
热议问题