如何在 swift 中使用其他 类 的指针

How to use pointer from other classes in swift

我正在将旧的 ObjectiveC 代码迁移到 swift。在 ObjcC 中有一个单独的 class 来处理我的 Admob activity。 在此class我在初始化函数中创建了一个指针,当改变场景时,我可以使用这个指针来改变广告横幅的位置。

       @implementation MyAdsSupport

    +(id)ShowAds:(My_Ads_Position)posIndex
    {
        if (_adsBannerPointer == nil)
        {
            _adsBannerPointer = [[KTFAdsSupport alloc]initAds:posIndex];
        }
        else
        {
            [_adsBannerPointer setAdsPosition:posIndex];
        }
        return _adsBannerPointer;
    }

在 Swift 中,我创建了 Admob class,并设法在屏幕上展示广告,但是当我尝试从另一个 class 调用指针时,它 returns 总是零。 这是我的 Swift 代码:

   var adsPointer: My_Ads_Support!

func initAds(myView: UIViewController, atPos: My_Ads_Position) -> KTF_Ads_Support {


    if adsPointer == nil {
        adsPointer = self
        adsPointer.ShowAds(myView: myView, atPos: atPos)
    }
    else
    {
        print("adsPointer ALIVE")
        adsPointer.setAdsPos( atPos: atPos)
    }
    return self.adsPointer!
}

如何在 Swift 中设置指针以便能够从任何场景到达广告横幅?

在你的Objective-C代码中你有三个方法,实例方法initAds:setAdsPosition:,以及 class 方法 ShowAds:。后者使用一个变量,大概声明为 static,称为 _adsBannerPointer.

您的 Swift 代码 不同。它有两种方法,instance方法initAdssetAdsPos,以及一个变量,instance变量adsPointer.

在Swift中,class方法被称为类型方法(因为它们可以属于classes、结构和枚举)并且是使用关键字 static 表示,类型 (class) 变量也用 static 表示。因此,要遵循您的 Objective-C 模型,您需要遵循以下原则:

static var adsPointer: My_Ads_Support!

// instance init
init(startingPos : My_Ads_Position) { ... }

// instance set position
fun setAdsPos(atPos : My_Ads_Position) { ... }

static func showAds(myView: UIViewController, atPos: My_Ads_Position) -> KTF_Ads_Support { ... }

HTH