ios - 引用一个尚不存在的对象

标签 ios reference null storekit

我在应用程序委托(delegate)中有一段工作代码,其中包含对 View 的引用,该 View 可能会或可能不会在应用程序的使用过程中创建。这段代码最终只会在引用的对象存在后被调用,所以不会有崩溃的可能。

但是,编译器检测到这个引用并给出警告:

warning: Semantic Issue: Instance method
 '-dismissPurchasingViewAndUpdateSetupView' not found (return type
 defaults to 'id')

简而言之,这就是正在发生的事情:

在应用委托(delegate)中:

@interface appDelegate : NSObject
  {
   NSObject *purchasingView;
  }

  @property (nonatomic, retain) NSObject *purchasingView;
@end

@implementation appDelegate
  @synthesize purchasingView;

-(void)aMethod
{  
  [purchasingView dismissPurchasingViewAndUpdateSetupView];       
}

在 View Controller 中:

-(void) someOtherMethod
{
    //Let the app delegate know about the reference to this view
    appDelegate *appDelegate = (appDelegate *)[[UIApplication sharedApplication] delegate];
    appDelegate.purchasingView = self;
}

-(void)dismissPurchasingViewAndUpdateSetupView
{
    [self dismissModalViewControllerAnimated:YES];
}

app delegate 实现了一个 SKPaymentTransactionObserver 并且它在 View Controller 中接收由购买触发的 App Store 通知。当购买完成时,应用程序委托(delegate)通知 View Controller 自行关闭。

这样做是否明智?有没有办法让编译器忽略应用首次运行时 purchasingView 指针指向 null 的事实?

最佳答案

您没有收到错误,因为当应用程序启动时 purchasingView 可能是 nil

你收到错误是因为 purchasingView 是一个 NSObject,而 NSObject 没有实现 -dismissPurchasingViewAndUpdateSetupView方法。如果您将 purchasingView 的类型更改为您实现 purchasingView 的任何类,那么错误就会消失。

关于ios - 引用一个尚不存在的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9374741/

相关文章:

ios - 如何在 SwiftUI 中为按钮提供带有cornerRadius的阴影

ios将项目转换为arc

ios - CryptoKit 在 iOS 版本低于 13 的手机上抓取应用程序

c++ - 将有根层次结构的对象存储在 vector 中

c++ - Eclipse中 undefined reference 问题

java - 什么是 null :Java?

ios - React-Native 嵌套数组

python - 如果两个变量指向同一个对象,为什么重新分配一个变量不会影响另一个变量?

sqlite - SQL - 删除具有空值的重复项 WITHOUT row_number

python - 在 Pandas 中重命名 "None"值