Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从不兼容的类型分配给可为空的ID_Ios_Objective C_Delegates_Uiimagepickercontroller - Fatal编程技术网

Ios 从不兼容的类型分配给可为空的ID

Ios 从不兼容的类型分配给可为空的ID,ios,objective-c,delegates,uiimagepickercontroller,Ios,Objective C,Delegates,Uiimagepickercontroller,我在XCode中出现了这个警告,我似乎无法摆脱它 从不兼容类型“MyViewController*const\u strong”分配给“id\u Nullable” 在这一行: picker.delegate=self 这行代码使应用程序按预期工作所以移除它,它不起作用。但我不知道如何消除这个错误。有什么帮助吗? 已指定委托的其他方法不会引发此警告 视图控制器是嵌入在NavigationController中的TabBarViewController的一部分 我的类继承了UIImagePicke

我在XCode中出现了这个警告,我似乎无法摆脱它

从不兼容类型“MyViewController*const\u strong”分配给“id\u Nullable”

在这一行:

picker.delegate=self

这行代码使应用程序按预期工作所以移除它,它不起作用。但我不知道如何消除这个错误。有什么帮助吗?

已指定委托的其他方法不会引发此警告

视图控制器是嵌入在NavigationController中的TabBarViewController的一部分

我的类继承了UIImagePickerControllerDelegate

@interface MyViewController () <UICollectionViewDelegate, UICollectionViewDataSource, UIImagePickerControllerDelegate, UIActionSheetDelegate, UICollectionViewDelegateFlowLayout> {

}
///...
@end

添加
UINavigationControllerDelegate
以及
UIImagePickerControllerDelegate
会为我隐藏该警告

在UIKit中,图像选择器的委托指定为:

@property(nullable,nonatomic,weak) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;
@property(可空、非原子、弱)id委托;
来自文档:

图像选择器的委托对象

声明

SWIFT

weak var delegate: protocol<UIImagePickerControllerDelegate, UINavigationControllerDelegate>?
弱var委托:协议?
目标-C

@property(nonatomic, weak) id<UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate
@属性(非原子,弱)id委托
讨论


当用户拾取图像或电影或退出选择器界面时,代理将收到通知。委托还决定何时关闭选择器接口,因此必须提供一个委托才能使用选择器。如果此属性为nil,则如果您尝试显示它,将立即取消选取器。

添加
UINavigationControllerDelegate
以及
UIImagePickerControllerDelegate
会为我隐藏该警告

在UIKit中,图像选择器的委托指定为:

@property(nullable,nonatomic,weak) id <UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate;
@property(可空、非原子、弱)id委托;
来自文档:

图像选择器的委托对象

声明

SWIFT

weak var delegate: protocol<UIImagePickerControllerDelegate, UINavigationControllerDelegate>?
弱var委托:协议?
目标-C

@property(nonatomic, weak) id<UINavigationControllerDelegate, UIImagePickerControllerDelegate> delegate
@属性(非原子,弱)id委托
讨论


当用户拾取图像或电影或退出选择器界面时,代理将收到通知。委托还决定何时关闭选择器接口,因此必须提供一个委托才能使用选择器。如果此属性为nil,则如果尝试显示该选择器,则会立即将其解除。

除了
UIImagePickerControllerDelegate
之外,还需要
UINavigationControllerDelegate

@interface MyViewController () <UICollectionViewDelegate, UICollectionViewDataSource, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIActionSheetDelegate, UICollectionViewDelegateFlowLayout> {

}
@接口MyViewController(){
}

除了
UIImagePickerControllerDelegate
之外,还需要
UINavigationControllerDelegate

@interface MyViewController () <UICollectionViewDelegate, UICollectionViewDataSource, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIActionSheetDelegate, UICollectionViewDelegateFlowLayout> {

}
@接口MyViewController(){
}

UINavigationControllerDelegate
会处理警告。但是,
UINavigationBarDelegate
没有。是的,你是对的,我错过了打字。它应该隐藏这个警告。请清理您的项目并构建agian以查看更改。@Firemarble
UINavigationControllerDelegate
会处理警告。但是,
UINavigationBarDelegate
没有。是的,你是对的,我错过了打字。它应该隐藏这个警告。请清理您的项目并构建agian以查看更改。@FireMarble解决了此问题。您是否碰巧有一个指向某些文档的快速链接,这些文档说明这是一项要求?为什么其他代理会抛出该警告?可以找到
UIImagePickerController
delegate
属性的文档。它被声明为
@property(可空、非原子、弱)id委托。这意味着分配给属性的任何内容都必须符合这两个协议。非常感谢。这是我必须记住的一件事。你为什么要记住呢?它是有文档记录的,如果你犯了错误,编译器会告诉你你做错了什么。这就解决了问题。您是否碰巧有一个指向某些文档的快速链接,这些文档说明这是一项要求?为什么其他代理会抛出该警告?可以找到
UIImagePickerController
delegate
属性的文档。它被声明为
@property(可空、非原子、弱)id委托。这意味着分配给属性的任何内容都必须符合这两个协议。非常感谢。这是我必须记住的一件事。你为什么要记住呢?它是有文档记录的,如果你犯了错误,编译器会告诉你你做错了什么。