2012-04-30 26 views
25

Otrzymałem ten błąd przy kilku okazjach i nie jestem pewien, co powoduje błąd w ogóle. Po ponad godzinie przepełnienia stosu i google wciąż nie mam odpowiedzi. Czy ktoś może pomóc?Brak widocznego interfejsu @ dla

Widziałem kilka konkretnych odpowiedzi, ale nic, co mówi, dlaczego błąd się dzieje, tylko "dox" lub "do y".

Nie podałem jeszcze kodu, ponieważ chcę poznać przyczynę tego błędu, więc mogę naprawić mój kod w przyszłości, gdy tylko otrzymam ten błąd.

+0

nie zostały uwzględnione kod! jaki błąd dostałeś? jak można się tego spodziewać? Wątpię, czy tu jest dużo psychicznych ludzi. – ant

+5

Pojawia się błąd "Brak widocznego interfejsu @ dla ...". Zawarłem to w tytule, ale prawdopodobnie powinienem był to również zawrzeć w opisie. –

Odpowiedz

11

Istnieje wiele powodów, dla których może się to zdarzyć, ale ogólnie mówi się, że na linii kodu, którą zaznacza, nie widać żadnego dowodu, że selektor, do którego się odwołujesz, znajduje się w interfejsie typu, który uważa za obiekt. ma.

W tym przykładzie

No visible interface error

Oświadczyli operandStack z niewłaściwego typu.

W tym jednym

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

Mieli literówkę w nazwie selektor

+0

Dziękuję za prostą odpowiedź, jestem bardzo nowy. Jak dodać selektor do interfejsu? –

+1

To tylko inna nazwa komunikatu/metody w tym kontekście. –

+0

Podstawowe Objective-C można znaleźć tutaj http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Introduction/introObjectiveC.html#//apple_ref/doc/uid/TP30001163-CH1- SW2 –

2

jakaś szansa, jesteś na Xcode 4.2 (lub mniej), działający kod, który został napisany na Xcode 4.3? W 4.3+ Xcode nie wymaga zadeklarowania prywatnych metod w ogóle, po prostu zakłada, że ​​metody zapisane w pliku implementacji (bez deklaracji w interfejsie) są prywatne. Ale w Xcode < = 4,2, spowoduje to błąd i te metody muszą być co najmniej deklarowane prywatnie

+2

Używam 4.3.2. To jednak dobrze wiedzieć. Dziękuję Ci! –

+2

Kompilator pre-Xcode 4.2 umożliwia również korzystanie z niezadeklarowanych metod bez błędów, o ile zostały one zdefiniowane w pliku przed ich użyciem. –

+0

Dzięki za wyjaśnienie @ JacquesCousteau, to był mój pierwotny zamiar.Użyłem zadeklarowanych i definiuję zamiennie, gdy są to różne rzeczy. – JoeCortopassi

2

Po prostu miałem ten problem; Moja była spowodowana przez ustawienie metody jako metody klasy zamiast metody instancji. Bardzo chory.

1

Innym powszechnym błędem ist zapomnieć napisać [someInstance setSomeValue: 3]; zamiast [someInstance someValue: 3] (< - źle). To, co mi się przydarzyło.

2

Innym powodem może być przy użyciu kategorie w bibliotekach i nie ustawiono -ObjC (lub -all_load) w innych flagi Linker

Powiązane problemy