Ios init:已将无法识别的选择器发送到实例
我尝试在我用delphi Rio 10.3.3制作的ios应用程序中实现新的强制(6月份)身份验证服务。为此,我将此类转换为:Ios init:已将无法识别的选择器发送到实例,ios,swift,delphi,firemonkey,Ios,Swift,Delphi,Firemonkey,我尝试在我用delphi Rio 10.3.3制作的ios应用程序中实现新的强制(6月份)身份验证服务。为此,我将此类转换为: AS_EXTERN API_AVAILABLE(ios(13.0), macos(10.15), tvos(13.0), watchos(6.0)) @interface ASAuthorizationController : NSObject /*! @abstract Authorization requests that are being serviced b
AS_EXTERN API_AVAILABLE(ios(13.0), macos(10.15), tvos(13.0), watchos(6.0))
@interface ASAuthorizationController : NSObject
/*! @abstract Authorization requests that are being serviced by this controller
*/
@property (nonatomic, readonly, strong) NSArray<ASAuthorizationRequest *> *authorizationRequests;
/*! @abstract This delegate will be invoked upon completion of the authorization indicating success or failure.
Delegate is required to receive the results of authorization.
*/
@property (nonatomic, weak, nullable) id <ASAuthorizationControllerDelegate> delegate;
/*! @abstract This delegate will be invoked upon needing a presentation context to display authorization UI.
*/
@property (nonatomic, weak, nullable) id <ASAuthorizationControllerPresentationContextProviding> presentationContextProvider API_UNAVAILABLE(watchos);
/*! @abstract Initialize the controller with authorization requests.
@param authorizationRequests At least one request should be provided. Requests of same type maybe honored in first in first out order
*/
- (instancetype)initWithAuthorizationRequests:(NSArray<ASAuthorizationRequest *> *)authorizationRequests NS_DESIGNATED_INITIALIZER;
/*! @abstract Initiate the authorization flows. Upon completion, the delegate will be called with either success or failure.
Certain authorization flows may require a presentation context, the presentationContextProvider will be called to provider it.
The instance will remain retained until the user completes the flow and the delegate callback is made.
*/
- (void)performRequests;
+ (instancetype)new NS_UNAVAILABLE;
- (instancetype)init NS_UNAVAILABLE;
@end
AS_EXTERN API_可用(ios(13.0)、macos(10.15)、tvos(13.0)、watchos(6.0))
@接口ASAuthorizationController:NSObject
/*! @此控制器正在处理的抽象授权请求
*/
@属性(非原子、只读、强)NSArray*授权请求;
/*! @抽象此委托将在完成指示成功或失败的授权后调用。
要求委托人接收授权结果。
*/
@属性(非原子、弱、可空)id委托;
/*! @抽象当需要显示授权UI的表示上下文时,将调用此委托。
*/
@属性(非原子、弱、可空)id presentationContextProvider API_不可用(watchos);
/*! @抽象使用授权请求初始化控制器。
@param authorizationRequests至少应提供一个请求。相同类型的请求可能会按照先进先出的顺序进行处理
*/
-(instancetype)initWithAuthorizationRequests:(NSArray*)authorizationRequests NS_指定的_初始值设定项;
/*! @抽象启动授权流。完成后,将成功或失败地调用该委托。
某些授权流可能需要表示上下文,将调用presentationContextProvider来提供它。
该实例将一直保留,直到用户完成流并进行委托回调。
*/
-(无效)履行要求;
+(instancetype)新的NS\U不可用;
-(instancetype)初始化NS_不可用;
@结束
给这个德尔福班
ASAuthorizationControllerClass = interface(NSObjectClass)
['{1FFA7BB5-DAA7-4FD5-A5B7-FE466A83A23F}']
end;
ASAuthorizationController = interface(NSObject)
['{214873D8-CCF0-42B8-A381-04BBCFB75269}']
//function authorizationRequests : NSArray; cdecl;
procedure setDelegate(delegate: ASAuthorizationControllerDelegate); cdecl;
function delegate : ASAuthorizationControllerDelegate; cdecl;
procedure setPresentationContextProvider(presentationContextProvider: ASAuthorizationControllerPresentationContextProviding); cdecl;
function presentationContextProvider: ASAuthorizationControllerPresentationContextProviding; cdecl;
function initWithAuthorizationRequests(authorizationRequests: NSArray): ASAuthorizationController; cdecl;
procedure performRequests; cdecl;
end;
TASAuthorizationController = class(TOCGenericImport<ASAuthorizationControllerClass, ASAuthorizationController>) end;
PASAuthorizationController = Pointer;
ASAuthorizationControllerClass=接口(NSObjectClass)
[{1FFA7BB5-DAA7-4FD5-A5B7-FE466A83A23F}]
结束;
ASAuthorizationController=接口(NSObject)
[{214873D8-CCF0-42B8-A381-04BBCFB75269}]
//功能授权请求:NSArray;cdecl;
过程集合委派(委派:ASAuthorizationControllerDelegate);cdecl;
功能委托:ASAuthorizationControllerDelegate;cdecl;
过程设置presentationContextProvider(presentationContextProvider:AsAuthorizationControllerPresentationContextProvider);cdecl;
函数presentationContextProvider:AsAuthorizationControllerPresentationContextProvider;cdecl;
函数initWithAuthorizationRequests(authorizationRequests:NSArray):一个AuthorizationController;cdecl;
程序执行要求;cdecl;
结束;
TASAuthorizationController=类(TOCGenericImport)结束;
PASAuthorizationController=指针;
但问题是,当我调用TASAuthorizationController.create
时,我收到以下错误:
-[ASAuthorizationController init]:发送到实例0x283c23380的无法识别的选择器
如何在delphi下创建
ASAuthorizationController
的实例?通常我必须调用initWithAuthorizationRequests
,但它没有用(+)标记,而是用(-)标记,因此这意味着它不是静态/类函数,因此我需要ASAuthorizationController
的实例来调用它DoASAuthorizationController*target=[[ASAuthorizationController alloc]initWithAuthorizationRequests:@[…]
在Objective-C中。在Swift中,它应该是:让target=ASAuthorizationController.init(with authorizationrequest:[…])
@Larme偏离路线!谢谢你为我节省了很多时间,这是答案,使用alloc而不是init”,带(+),但带(-)这意味着它不是一个静态/类函数,所以我需要一个AuthorizationController的实例来调用它:“-(instancetype)init
已经是一个实例方法。只是在Objective-C中,它通常是[[SomeClass alloc]init]
,这与[SomeClass new]
相同。在Swift中,我们不这样做“显示alloc”,但它是一样的。@larme,谢谢如果你能把你的评论放在回答中,我会接受它的,它是完美的!