我正在将我的旧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中设置指针以便能够从任何场景到达广告横幅?
答案 0 :(得分:1)
在Objective-C代码中,您有三个方法,实例方法initAds:
和setAdsPosition:
以及类< / em>方法ShowAds:
。后者使用一个变量,大概是static
,称为_adsBannerPointer
。
您的Swift代码不相同。它有两个方法,实例方法initAds
和setAdsPos
,以及一个变量,实例变量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