2017-12-17 26 views
1

나는 내 기존 ObjectiveC 코드를 신속하게 이민 갈 것이다. 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; 
    } 

는 스위프트에 나는 몹 클래스를 생성하고 화면에 광고를 제공하기 위해 관리하지만 다른 클래스에서 포인터를 호출 할 때 항상 nil을 반환합니다. 여기 내 스위프트 코드 :

내가 스위프트의 포인터를 설정할 수있는 장면에서 광고 배너에 도달 할 수 방법
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! 
} 

? 당신의 목표 - C 코드에서

답변

1

당신은 방법의 예를 방법 initAds:setAdsPosition:하고 클래스 방법 ShowAds: 있습니다. 후자는 변수 static (아마도 _adsBannerPointer이라고 선언 됨)을 사용합니다.

귀하의 스위프트 코드는 이 아니며이 아닙니다. 인스턴스 메서드 initAdssetAdsPos인스턴스 변수 adsPointer의 두 가지 메서드가 있습니다. (그들이 클래스 구조체 및 열거 속할 수로서) 및 키워드 static의 사용에 의해 표시된다 스위프트 클래스의 메소드

형 방법 지칭되며, 유형 (클래스) 변수는 static로 표시된다.

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

+0

감사 답변에 대한 많은 : 그래서 당신의 목표 - C 모델을 따라 당신의 라인을 따라 뭔가가 필요! 정말 잘됐다! – EranKT