NADViewのdelegate初期化処理を自動化する

| コメント(0) | トラックバック(0)
こんにちは。開発担当のICTFです。

nend広告SDKのNADViewですが、release前にdelegateにnilを設定しなければならないですよね。
この初期化を忘れてしまうと、次回広告読み込み時にdelegateとして設定しているオブジェクトが無い為にアプリが不正終了してしまいます。
落ちるタイミングが広告読み込み時であるため、一見何も操作していないのに突然落ちるという少し厄介な不具合となってしまい、おっちょこちょいな私としてはこれまでに結構な時間を取られてしまっています。

今回はこの忘れがちなNADView.delegate = nilの処理を自動化しようと思います。
これが実装できればNADViewを張って、剥がしてのみ考えれば良いので楽になります。
仕組みは単純で、NADViewExというUIViewを継承したクラスを作り、NADViewExにNADViewを貼付けます。
画面から剥がされるとNADViewExのdeallocがコールされるので、その中でNADView.delegateにnilを設定します。

以下実装です。
【NADViewEx.h】

@interface NADViewEx : UIView

<NADViewDelegate>

{

NADView* _nadView;

}


-(id)initWithFrame:(CGRect)frame rootViewController:(UIViewController*)rootViewController;


@end


【NADViewEx.m】

- (id)initWithFrame:(CGRect)frame rootViewController:(UIViewController*)rootViewController

{

    self = [super initWithFrame:frame];

    if (self) {

// NADView

_nadView = [[NADView alloc] initWithFrame:frame];

[_nadView setNendID:NAD_KEY spotID:NAD_ID];

[_nadView setBackgroundColor:[UIColor clearColor]];

[_nadView setRootViewController:rootViewController];

[_nadView setDelegate:self];

[_nadView load:nil];

[self addSubview:_nadView];

    }

    return self;

}


-(void) dealloc

{

_nadView.delegate = nil;

[_nadView release];

[super dealloc];

}


// Adの初回読み込み完了

-(void) nadViewDidFinishLoad:(NADView *)adView

{

NSLog(@"Ad初回読み込み成功");

}


// Adの読み込み完了通知

-(void) nadViewDidReceiveAd:(NADView *)adView

{

NSLog(@"Ad読み込み成功");

}


// Adの読み込み失敗通知

-(void) nadViewDidFailToReceiveAd:(NADView *)adView

{

NSLog(@"Ad読み込み失敗");

}


@end


不正終了周りの面倒な心配が消えますので、是非使ってみて下さい。

トラックバック(0)

トラックバックURL: http://www.ict-fractal.com/MovableType/mt/mt-tb.cgi/53

コメントする

Twitterボタン
Twitterブログパーツ