UIButtonのアクション設定でハマった

Posted 2010年6月29日 | Auther dada | Category PC・デジタル | Tag タグ: ,
Twitterにツイートする Facebookでシェアする はてなブックマーク

動的に複数のボタンを作っていたら、ボタンを押したとたん落ちてしまう。
そんな状態にハマりました。^^;

CGRect rect = CGRectMake(mapX, mapY, MAP_DESK_YOKO_W, MAP_DESK_YOKO_H);
UIButton *button = [[UIButton alloc]initWithFrame: rect];
[button addTarget:self action:@selector(mapButtonTouch)
	forControlEvents:UIControlEventTouchUpInside];
[button setBackgroundColor:[UIColor redColor]];
button.tag = count;

comikechk[4537:207] *** -[ComikeMapViewController mapButtonTouch]: unrecognized selector sent to instance 0x48609a0

なんだろーなんだろーと検索しても有効な情報が得られない。
ふと、作例を載せているサイトを見ていたら…あっ!!

[button addTarget:self action:@selector(mapButtonTouch:)
	forControlEvents:UIControlEventTouchUpInside];

@selectorでメソッドを指定する時に最期の「:」を付け忘れただけでした。
うわー、まぬけすぎるw

release しても nil しとけ?

Posted 2010年6月28日 | Auther dada | Category PC・デジタル | Tag タグ: ,
Twitterにツイートする Facebookでシェアする はてなブックマーク

iPhoneプログラミングメモ。

処理進行中を表すために用いられるくるくる回るアニメーション
UIActivityIndicatorView が用いられますが、解放関係でハマったのでメモ。

[indicator stopAnimating];
[indicator removeFromSuperview];
[indicator release];

アニメーションをストップして、ビューから外して、解放しています。
が、このコードだと

-[UIActivityIndicatorView stopAnimating]: message sent to deallocated instance

なんてエラーになってしまいました。
releaseの後にさらに nilを代入したら問題なく動作するようになりました。

[indicator stopAnimating];
[indicator removeFromSuperview];
[indicator release];
indicator = nil;

おそらく他の部分で UIActivityIndicatorViewインスタンスの有無を
チェックして処理をわけている箇所があるので、そのへんが関係あるのかも。
ないのかも。

if( indidator ){
 〜くるくるアニメがある時の処理〜
}

あとはこのへんが多少なりとも関係しているんでしょうか?

CoreDataで日本語検索が上手くいかない

Posted 2010年6月22日 | Auther dada | Category PC・デジタル | Tag タグ: , , ,
Twitterにツイートする Facebookでシェアする はてなブックマーク

はじめてのあいぱっどあぷり。
略して「はじあい」。

そんなワタクシですが無謀にもCoreDataにまで手を出しています。
で、日本語検索が出来なくてハマったのでメモ。

「day」という項目に曜日が格納されており、
それごとにデータを抽出しようとしています。
「dayList」は曜日一覧をまとめたNSArray。
「gNowDay」は現在表示させたい曜日の番号です。

NSPredicate *preDay = [NSPredicate predicateWithFormat:@"day == '%@'",
	[dayList objectAtIndex:gNowDay]];
[request setPredicate:preDay];

これだとダメでした。
「'%@'」の部分を「'土'」など決め打ちにしたらいけました。

次はうまくいったコード。

NSString *preDayStr = [NSString stringWithFormat:@"day == '%@'",
	[dayList objectAtIndex:gNowDay]];
NSPredicate *preDay = [NSPredicate predicateWithFormat:preDayStr];
[request setPredicate:preDay];

一度NSStringに格納してからやったら出来ました。
そういうもんなのかー。

そしてこれは複合条件の指定。NSCompoundPredicateを使います。
「土曜の東館」とか指定するわけですね。

NSString *preDayStr = [NSString stringWithFormat:@"day == '%@'",
	[dayList objectAtIndex:gNowDay]];
NSPredicate *preDay = [NSPredicate predicateWithFormat:preDayStr];
NSPredicate *preArea = [NSPredicate predicateWithFormat:
	@"areaCode == %d",areaCode];
NSPredicate *allPre = [NSCompoundPredicate
	andPredicateWithSubpredicates:[NSArray arrayWithObjects:
	preArea, preDay, nil]];
[request setPredicate:allPre];

Object-Cの割り算でハマった

Posted 2010年6月20日 | Auther dada | Category PC・デジタル | Tag タグ: ,
Twitterにツイートする Facebookでシェアする はてなブックマーク

もんのすごい単純なことでドハマりました…。

float floatNum = 128 / 255;
NSLog(@"%f", floatNum);  // 結果は「0.0000〜」
float floatNum = 128.0 / 255.0;
NSLog(@"%f", floatNum);  // 結果は「0.501960〜」

小数点のついた値でないと切り捨てられちゃうのかーーーー!!!
c言語ってのはそういうもんなんですか?

しかし整数で格納している値を計算して小数点を出したい時は
どうやって「.0」をつければいいんだろう…。

int intNum = 10;
float floatNum = intNum;
NSLog(@"%f", floatNum/50);  // 結果は「0.2000〜」

なるほど、いったん float型に代入すればいいのか。
って、めんどくさいw

Object-Cで16進数文字列から数値に

Posted 2010年6月19日 | Auther dada | Category PC・デジタル | Tag タグ: ,
Twitterにツイートする Facebookでシェアする はてなブックマーク

iPhoneプログラミングメモ。

htmlなどで使う16進数の色を10新数の数値に変換する方法。

NSString *colorString = @"ff0000";
int r,g,b;
sscanf([colorStr UTF8String],"%02X%02X%02X",&r,&g,&b);

NSScanner の scanHexInt を使ってもできるみたいだけど、
こっちのがシンプルなので。

#defineを使う方法なんてのもあるんですね。

#define HEXCOLOR(c) [UIColor colorWithRed:((c>>16)&0xFF)/255.0 
green:((c>>8)&0xFF)/255.0 
blue:(c&0xFF)/255.0 
alpha:1.0];

UIColor *color = HEXCOLOR(0xff00ff);

カテゴリー