考虑私有C函数
最初的想法是在
_UICreateScreenUIImage
,它返回当前设备屏幕的UIImage
快照:OBJC_EXTERN UIImage *_UICreateScreenUIImage(void) NS_RETURNS_RETAINED;
我可以把这个放在一个桥接头文件中,然后在 Swift 中像这样访问:
MyApp-Bridging-Header.h
@import UIKit;
UIImage *_UICreateScreenUIImage(void) NS_RETURNS_RETAINED;
MyClass.swift
let image = _UICreateScreenUIImage()
print(image) // <UIImage: 0x7fc4ba6081c0>, {375, 667}
有没有一种方法可以在不使用桥接头文件的情况下,在纯Swift中访问_UICreateScreenUIImage
?最初的想法是在
UIImage
的扩展上创建一个函数,但扩展要求我在扩展内部声明该函数的主体:extension UIImage {
public func _UICreateScreenUIImage(_: Void) -> UIImage // "Expected '{' in body of function declaration"
}
无论如何,此实现存在缺陷,因为_UICreateScreenUIImage
不是UIImage
的方法。
在纯Swift中暴露和访问此方法是否可能?
人们似乎将我的问题与“我如何截取屏幕截图?”混淆了。那不是我在问的。我正在询问如何访问像UIImage *_UICreateScreenUIImage(void);
这样的方法。它可以是任何私有方法,比如+(UIImage *)_deviceSpecificImageNamed:(NSString *)name inBundle:(NSBundle *)bundle;
或者+(UIImage *)_pu_PhotosUIImageNamed:(NSString *)name;
。
asmname
和_silgen_name
在哪里有记录?这是Swift中的extern C
等价物吗? - JALUIImage
上的私有类方法本身,例如:+(UIImage *)_pu_PhotosUIImageNamed:(NSString *)name;
?那是否遵循相同的模式? - JALNS_RETURNS_RETAINED
问题。 - Sam R.