I've read that you should try to use @class
in your header file instead of #import
but this doesn't work when your @class
contains a delegate protocol that you're trying to use.
MyView.h
#import <UIKit/UIKit.h>
@class MyCustomClass; // <-- doesn't work for MyCustomClassDelegate, used below
@interface MyView : UIView <MyCustomClassDelegate>
@end
I think I'm overlooking something, is there a way to get @class
to work in this situation or is #import
my only choice?
Edit: One work around for this is, of course, declaring your #import MyCustomClass and MyCustomClassDelegate in the private interface section of the .m file instead of the .h file.
you can use @protocol
to forward declare a protocol if you only need it for variables such as this:
@protocol MyProtocol;
@interface MyClass {
id<MyProtocol> var;
}
@end
In your case the declared class is trying to conform to a protocol so the compiler must know about the protocol methods at this point in order to deduce weather or not the class conforms.
In this case, I think your options are to split the protocol into its own file and #import
that header, or declare the protocol in that header above the class declaration that uses it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With