I have a class like this..
#import "MyObjectAddView.h"
#import "MyAppDelegate.h"
#define myAppDelegate (MyAppDelegate *) [[UIApplication sharedApplication] delegate]
@class MyObjectAddView;
@interface AccountViewController : UIViewController <UIScrollViewDelegate, MyObjectAddViewDelegate, UIImagePickerControllerDelegate> {
MyObjectAddView *myAddView;
.....
}
@property (nonatomic, retain) IBOutlet MyObjectAddView *myAddView;
- (id) initWithSettings:(SettingsObject *)settings;
@end
WHY is it suddenly telling me that it Cannot find protocol declaration for 'MyObjectAddViewDelegate' when I'm clearly importing and including the @class for where the protocol is defined? Here how MyObjectAddView setup:
#import <UIKit/UIKit.h>
#import "MyAppDelegate.h"
#define myAppDelegate (MyAppDelegate *) [[UIApplication sharedApplication] delegate]
@protocol MyObjectAddViewDelegate;
@interface MyObjectAddView : UIView <UITextFieldDelegate> {
@private
id <MyObjectAddViewDelegate> delegate;
....
@public
.....
}
@property(nonatomic, assign) id <MyObjectAddViewDelegate> delegate;
.....
@end
@protocol MyObjectAddViewDelegate <NSObject>
// expense == nil on cancel
- (void)myObjectAddViewDidFinish:(MyObjectAddView *)addView;
@end
Everything seems perfectly setup and I don't see any circular imports ?! Any suggestions why it might not be seeing the protocol definition in MyObjectAddView?
Thanks.
You do not need a forward reference to a class after you have imported the header for that class. Only time you do a forward reference is if you plan on including the header inside of the implementation file. Remove @class MyObjectAddView
and if that fixes it let me know if not I may have another solution for you.
Synthesizing the discussion: another solution is to check for cyclical imports between the delegate implementation and protocol declaration. This solved my issue.
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