我正在将我的旧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代码中,您有三种方法,实例方法initAds:
和setAdsPosition:
,以及类方法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