代码之家  ›  专栏  ›  技术社区  ›  Kevin Amiranoff

@interface中的Objective-c特定iOS版本

  •  2
  • Kevin Amiranoff  · 技术社区  · 7 年前

    我正在尝试实现Apple Pay,我尝试实现两种方法,一种用于iOS10,另一种用于iOS11+,

    因此,在我的实现中,我有:

    -(void) paymentAuthorizationViewController
      (PKPaymentAuthorizationViewController *)controller
                                       didAuthorizePayment:(PKPayment *)payment
                                                   handler:(void (^)(PKPaymentAuthorizationResult * _Nonnull))completion  API_AVAILABLE(ios(11.0))
            {
           self.completionResult = completion
                ...
    
    - (void) paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
                                        didAuthorizePayment:(PKPayment *)payment
                                                 completion:(void (^)(PKPaymentAuthorizationStatus))completion 
                {
          self.completionStatus = completion
            ...
    

    在我的界面中,我有:

    @property (nonatomic, copy) void (^completionStatus)(PKPaymentAuthorizationStatus);
    @property (nonatomic, copy) void (^completionResult)(PKPaymentAuthorizationResult *);
    

    我遇到的问题是XCode在接口中给出以下警告:

    'PKPaymentAuthorizationResult' is only available on iOS 11.0 or newer
    

    这是实现特定版本代码的正确方法吗?我可以在接口中指定特定于版本的代码吗?

    2 回复  |  直到 7 年前
        1
  •  4
  •   Kerberos    7 年前

    若要消除界面中的警告,可以尝试添加如下API可用宏: API_AVAILABLE(ios(11.0)) 在声明的最后。

        2
  •  2
  •   Dare    7 年前

    我相信你也能做到。

    @property (nonatomic, copy) void (^completionResult)(PKPaymentAuthorizationResult *) API_AVAILABLE(ios(11.0));