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

问题描述 投票:1回答:1

我正在将我的旧ObjectiveC代码移植到swift。在ObjcC中有一个单独的类来处理我的Admob活动。在这个类中,我在init func中创建了一个指针,当改变场景时,我可以使用这个指针来改变广告横幅的位置。

       @implementation MyAdsSupport

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

在Swift中我创建了Admob类,并设法在屏幕上显示广告,但是当我尝试从另一个类调用指针时,它总是返回nil。这是我的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 swift pointers viewcontroller scene
1个回答
1
投票

在Objective-C代码中,您有三种方法,实例方法initAds:setAdsPosition:,以及类方法ShowAds:。后者使用一个变量,大概宣称为static,称为_adsBannerPointer

你的Swift代码不一样。它有两种方法,实例方法initAdssetAdsPos,以及一个变量,实例变量adsPointer

在Swift类中,方法被称为类型方法(因为它们可以属于类,结构和枚举),并且通过使用关键字static来指示,类型(类)变量也用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

© www.soinside.com 2019 - 2024. All rights reserved.