複数のUIAlertViewでdelegateを使い分ける
tagを使う。
//アラート画面のタグを宣言 static const NSInteger firstAlertTag = 1; static const NSInteger secondAlertTag = 2; //アラートを作るときにタグを設定 UIAlertView *firstAlert = [[UIAlertView alloc] initWithTitle:nil message:@"This is firstAlert" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; firstAlert.tag = firstAlertTag; ... UIAlertView *secondAlert = [[UIAlertView alloc] initWithTitle:nil message:@"This is secondAlert" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; secondAlert.tag = secondAlertTag; ... //アラートのボタンが押されたときに呼ばれるデリゲーションメソッド - (void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ //タグをチェック if (alertView.tag == firstAlertTag) { 処理.... }else if (alertView.tag == secondAlertTag) { 処理.... }http://49hack.net/?p=282
警告達
incomplete implementation
.hで宣言したメソッドが.mにないと出てくる。
Storyboardから始めるiPhoneアプリ開発 Incomplete implementation
expression result unused
返り値使ってない行に出てくる。
戻り値を使っていない行に対して "Expression result unused" という警告が表示される。
(例)[[NSObject alloc]init];
(回避策) 行頭に (void) を付ける(void) [[NSObject alloc]init];
objective-c - memo
ただ、この使い方で間違いない場合、コンパイル時に警告が表示されるのは間際しいので、この時に限って "Expression result unused" を表示させないようにしてみます。
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunused-value" [[_EzFlashStatusBarWhenMemoryWarning alloc] init]; #pragma clang diagnostic popEZ-NET: Expression result unused 警告を表示しないようにする
Capturing 'xxx' strongly in this block is likely to lead to a retain cycle
block構文でselfやインスタンス変数を参照すると出てくる。
@implementation Hoge -(void)hogeMethod{ hogeHandler = ^(Fuga *fuga){ [self someMethod:fuga]; }; } @endこれ,selfがずっと存在するからhogeHandlerの参照が減らないのね.だから__blockつけてやると,Reference Count使わない指定ができるそうな.
訂正版
@implementation Hoge -(void)hogeMethod{ // ここでselfを別にコピー(こいつはブロック専用だから参照カウントを減らせてGCできる) __block Hoge *blockself = self; hogeHandler = ^(Fuga *fuga){ [blockself someMethod:fuga]; }; } @end= ARC retain cycle - ぺっくブログミラー@peccul
Local Declaration of "xxx" Hides Instance Variable
ローカル変数とインスタンス変数の名前が被ってると出てくる。
Objective-Cと戦うブログ: 「Local Declaration of "xxx" Hides Instance Variable」というエラーについて
後方互換モードかそうでないか
IE8の後方互換モードのみに何かしたい機会があった。
IE8以降はUserAgentに"Trident"ってのがはいってるらしく、それ+ドキュメントモードの判定で判別できるらしい。
function isIECompatibility() { var ua = navigator.userAgent; if (ua.indexOf('MSIE') == -1) { return false; } else if (ua.indexOf('Trident') != -1 && document.documentMode && document.documentMode >= 8) { return true; } else { return false; } };IE8,9で後方互換モードかどうかをチェックする - Cheese Pie
スマホ向けスライドショーjQueryプラグイン
iPhone・Android・PCでフリックを実装できるjQueryプラグイン - Develo.org
・フリックでスライド動かせる
・ハッシュチェンジ対応
・Androidでまともに動く
という条件がクリアできた。重宝。