Ios 目标C-无法设置委托错误-找不到';myNSObjectClassDelegate';
我刚开始与Ios 目标C-无法设置委托错误-找不到';myNSObjectClassDelegate';,ios,objective-c,delegates,Ios,Objective C,Delegates,我刚开始与代表一起工作 出于某种原因,我不能这样做,我看到了错误 我试着在一个新项目上编写下一个代码,这是可以的,但是当我把这段代码转移到我的主项目时,我遇到了一些问题 我的NSObject类.h: @protocol myNSObjectClassDelegate <NSObject> @required -(void)doSomething; @end @interface GeneralMethods : NSObject @property (nonatomic,s
代表一起工作
出于某种原因,我不能这样做,我看到了错误
我试着在一个新项目上编写下一个代码,这是可以的,但是当我把这段代码转移到我的主项目时,我遇到了一些问题
我的NSObject
类.h
:
@protocol myNSObjectClassDelegate <NSObject>
@required
-(void)doSomething;
@end
@interface GeneralMethods : NSObject
@property (nonatomic,strong) id<myNSObjectClassDelegate> delegate;
@end
myUIViewController
.h
#import "GeneralMethods.h"
@interface view : UIViewController<UIGestureRecognizerDelegate,
UINavigationControllerDelegate,
UIImagePickerControllerDelegate,
myNSObjectClassDelegate>
我做错了什么
编辑:我想:
出于某种原因,在我的NSObject
类中,如果在此之后移动#import myUIViewcontroller
:
@protocol myNSObjectClassDelegate <NSObject>
@required
-(void)doSomething;
@end
@协议myNSObjectClassDelegate
@必需的
-(无效)剂量测定;
@结束
问题已解决。请确保将NSObject
类.h.
文件导入UIViewController的.h
文件(或声明协议的任何位置)。目前,您尚未导入声明协议的标头,因此您的视图控制器无法知道它是否存在
例:
#导入“FileWithProtocol.h”
@接口MyClass
...
@结束
在视图控制器.h文件中,尝试添加以下行:
@protocol MyNSObjectClassDelegate;
以前
@interface ...
我们看不到所有的代码,但在阅读了更多的交换之后,看起来依赖项可能是无序添加的。我建议将协议移动到它自己的文件中,并将其导入到所有使用它的地方。这样,您肯定会按照您期望的顺序导入内容
除此之外,以下财产声明:
@property (nonatomic,strong) id<myNSObjectClassDelegate> delegate;
现在,如果这种关系在两方面都很牢固,那么从所有拥有它的人那里释放父母将不足以释放它,因为它的孩子也与它有一种拥有关系
此外,您还可以省略以下内容:
@synthesize delegate;
“自动属性合成”会使此功能过时。与您的问题无关,但您最好将类和协议名称大写。这是一个常规惯例一般来说,您不应该维护与委派协议的强
关系。我不确定-虽然他没有实际展示它,但他视图控制器的.m
文件应该导入相应的.h
文件,它确实包含协议的导入。如果他在实现文件中导入它,头文件仍然无法找到它。对,我是说-头文件应该导入协议。(在他的代码片段中似乎已经有了。)并且实现文件应该导入头。OP的类名令人困惑,但似乎view.h
应该导入GeneralMethods.h
,而view.m
应该导入view.h
。但他似乎已经这样做了……编译器仍然会警告未声明的协议。但他已经在他的代码片段中导入了协议文件,在#import“GeneralMethods.h”中。不管怎样,他解决了。。。
@interface ...
@property (nonatomic,strong) id<myNSObjectClassDelegate> delegate;
@property (nonatomic,weak) id<myNSObjectClassDelegate> delegate;
Parent Object (usually Controller) -----STRONG-----> Child (View often)
View Thing ----WEAK--------> delegate (actually the Parent Object)
@synthesize delegate;