Ha! It’s a trick being played on you by the ghost of NeXTStep.
Historically, as in 20 years ago, many things were typed ‘id’ that would now have a specific type. Not sure why, but global variable NSApp is one of them.
So, when you send the “setDelegate:” message to it, the Obj-C compiler doesn’t know what class it really is. According to its usual rule, if it can see *any* declarations of a “setDelegate:” method in the compilation unit, it uses whichever one it likes for its syntax analysis.
So, in this case, it happened to choose the NSFileManager version of “setDelegate:”, which requires a protocol conformance that your app delegate doesn’t have.
Either cast NSApp explicitly to type (NSApplication*), or use [NSApplication delegate], so the compiler doesn’t end up playing guessing games with your code. On Aug 13, 2016, at 14:42 , Dale Miller < email@hidden> wrote:
I have the following statement in the init method of my major class: [NSApp setDelegate:self]; I get the following warning from Xcode 7.3.1 Sending ‘UnicodeIndexBuilder’ to parameter of incompatible type'id<NSFileManagerDelegate> _Nullable All of the NSApplication.h files i can find on my Mac (OS X 10.11.6) read as follows: - (void)setDelegate:(id)anObject
|