Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No visible @interface for

I have gotten this error on several occasions and am unclear as to what causes the error in general. After looking for over an hour on stack overflow and google I still don't have an answer. Could someone help?

I've seen several specific answers but nothing that says why the error happens, only "do x", or "do y".

I haven't included code yet because I want to know the reason that this error happens in general so I can fix my code in the future whenever I get this error.

like image 893
Shawn Sharp Avatar asked Apr 30 '12 16:04

Shawn Sharp


5 Answers

There are lots of reasons it could happen, but generally it's saying that at the line of code it flags, it doesn't see any evidence that the selector you are referencing is in the interface of the type it thinks the object has.

In this example,

No visible interface error

They declared operandStack with the wrong type.

In this one

http://www.raywenderlich.com/forums/viewtopic.php?f=2&t=3312

They had a typo in the selector name

like image 79
Lou Franco Avatar answered Nov 06 '22 23:11

Lou Franco


Any chance you are on Xcode 4.2 (or less), running code that was written on Xcode 4.3? In 4.3+ Xcode doesn't require you to declare private methods at all, it just assumes that methods written in the implementation file (without declarations in the interface) are private. But in Xcode <= 4.2, this will throw an error and those methods need to be at least declared privately

like image 30
JoeCortopassi Avatar answered Nov 06 '22 22:11

JoeCortopassi


I just had this problem; mine was caused by me setting the method as a class method rather than an instance method. Very silly.

like image 2
ratbum Avatar answered Nov 06 '22 23:11

ratbum


Another reason can be when using categories in libraries and you haven't set -ObjC (or -all_load) in the Other Linker Flags

like image 2
Peter Avatar answered Nov 06 '22 23:11

Peter


Another common error ist to forget to write [someInstance setSomeValue:3]; instead of [someInstance someValue:3] (<- wrong). That what happened to me.

like image 1
Jeremias Erbs Avatar answered Nov 07 '22 00:11

Jeremias Erbs