gpt4 book ai didi

iphone - 检查设备iOS平台是否存在重载方法

转载 作者:可可西里 更新时间:2023-11-01 06:19:24 25 4
gpt4 key购买 nike

ALAssetsLibrary 类中有 2 个“writeImageToSavedPhotosAlbum”方法:

- (void)writeImageToSavedPhotosAlbum:(CGImageRef)imageRef 
metadata:(NSDictionary *)metadata
completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock

(适用于 iOS 4.1+)

- (void)writeImageToSavedPhotosAlbum:(CGImageRef)imageRef 
orientation:(ALAssetOrientation)orientation
completionBlock:(ALAssetsLibraryWriteImageCompletionBlock)completionBlock

(适用于 iOS 4.0+)

我在我的代码中使用第一个(需要 iOS 4.1),它会在 iOS 4.0 设备上崩溃。我正在尝试使用 respondsToSelector 来检查支持哪种方法,但是看起来选择器只检查方法名称,而不检查参数。

我看了一些建议,觉得单纯看操作系统版本可能不太好,请问有没有类似responstoselector的东西可以帮我解决这个问题?

最佳答案

您误解了 Objective-C 方法命名系统。选择器是所有 foo:bar:baz: 组合的组合。因此,在这种情况下,没有名为 writeImageToSavedPhotosAlbum 的方法。第一个是,作为一个选择器,对应于

@selector(writeImageToSavedPhotosAlbum:metadata:completionBlock:)

第二个是

@selector(writeImageToSavedPhotosAlbum:orientation:completionBlock:)

在你的代码中,检查第一个选择器是否可用,如

if([obj respondsToSelector:@selector(writeImageToSavedPhotosAlbum:metadata:completionBlock:)]){
....
}

这应该区分第一个是否可用。

关于iphone - 检查设备iOS平台是否存在重载方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6839741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com