でも、NSStringからセレクターとクラスを生成できるからそれ格納しておけばおっけーですね!
Aclassname = @"TestView"; Bselectorname = @"TestMethod"; Class Aclass = NSClassFromString(Aclassname); SEL Bselector = NSSelectorFromString(Bselectorname);
Aclassname = @"TestView"; Bselectorname = @"TestMethod"; Class Aclass = NSClassFromString(Aclassname); SEL Bselector = NSSelectorFromString(Bselectorname);
#define TES(__OBJ1,__OBJ2) {\ if(__OBJ1!= __OBJ2){\ [__OBJ1 release];\ __OBJ1 =[__OBJ2 retain];} }
-(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; NSLog(@"nowTabIndex:%d",tabBar.selectedIndex);//この時点ではtab0 } -(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; NSLog(@"nowTabIndex:%d",tabBar.selectedIndex);//この時点ではtab1 }
-(void)firstEnum:(NSDictionary *)dict{ for(NSString * keyname in dict){ NSLog(@"キーは%@",keyname); } for(id obj in [dict allValues]){ NSLog(@"オブジェクトは%@",obj); } }
-(NSMutableArray *)testes{ NSMutableArray * returnArr = [NSMutableArray array]; @try{ for(int Cnt= 0;Cnt<100;Cnt++){ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc]init]; //[returnArr addObject:@"なにか"]; NSLog(@"%d番目は%@",Cnt,[returnArr objectAtindex:Cnt]);//←例外発生 [pool release];//ここにはこない } }@catch (NSException * e) { NSLog(@"%@",e); }@finally { //pool解放なし } return returnArr; }…逆に今までfinallyに書いてたからクラッシュしてたのかしらー。
/*---------監視するクラス---------*/ //ViewControllerの場合はwillAppearその他はinitでキー監視の宣言 -(void)viewWillAppear:(BOOL)animated{ KansiClass * kansi = [[KansiClass alloc] init]; //キー値監視登録 [kansi addObserver:self forKeyPath:@"keyPath" options:0 context:NULL]; } //監視キーに変更があった場合に呼び出される -(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context{ if([keyPath isEqualToString:@"keyPath"]){ //値変更したらこのクラスでやりたいことを記述 } } -(void)dealloc{ //登録の解除 [kansi removeObserver:self forKeyPath:@"keyPath"]; [kansi release]; [super dealloc]; } /*---------監視されるクラス内---------*/ -(void)changeKansi{ [self willChangeValueForKey:@"keyPath"]; //監視値の変更 kansiValue = FALSE; [self didChangeValueForKey:@"keyPath"]; }
animeView.transform = CGAffineTransformIdentity;で初期状態にもどる
-(void)startAnime:(UIView*)animeView{ //開始前に縮小しておく animeView.transform = CGAffineTransformMakeScale(0.1, 0.1); //アニメーション設定開始 [UIView beginAnimations:nil context:NULL]; //アニメーションの秒数 [UIView setAnimationDuration:0.3]; //動きの設定 [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; //delegate設定(endAnimeがいらないならnilでOK) [UIView setAnimationDelegate:self]; //アニメーション終了後にやりたい処理 [UIView setAnimationDidStopSelector:@selector(endAnime)]; //90度回転しながら元の大きさに拡大 CGAffineTransform transform1,transform2; transform1 = CGAffineTransformMakeRotation(M_PI * 90 / 180.0f); /* //ちなみに移動はこれ transform1 = CGAffineTransformTranslate(transform1, 128, 128); */ //拡大 transform2=CGAffineTransformMakeScale(1.0, 1.0); //transformの合成 CGAffineTransform concat = CGAffineTransformConcat(transform1, transform2); //transformの適用 [animeView setTransform:concat]; //アニメーション設定終了 [UIView commitAnimations]; } -(void)endAnime{ //アニメーション終了後にやりたい処理を書く }
// Debbugログ出力切り替え #ifdef DEBUG # define NSLog(...) NSLog(__VA_ARGS__) #else # define NSLog(...) {} #endif
//登録(didloadなどで) [[NSNotificationCenter defaultCenter] addObserver:class selector:@selector(yobimethod:) name:@"notificationName" object:nil]; /*class内*/ -(void)yobu{//呼び出し※引数はなくてもOK NSDictionary *userInfo = [NSDictionary dictionaryWithObject:obj forKey:@"objkey"]; [[NSNotificationCenter defaultCenter] postNotificationName: @"notificationName" object:nil userInfo:userInfo]; } //呼び出されるメソッド -(void)yobimethod:(NSNotification *)notification{ NSString*key = [[notification userInfo] objectForKey:@"objkey"]; }
#import <QuartzCore/QuartzCore.h>//使用クラスにインポートの必要あり -(void)createKadomaru{ UIView * maru = [[[UIView alloc] initWithFrame:CGRectMake(0,0,100,100)] autorelease]; maru.center = self.view.center; maru.backgroundColor = [UIColor whiteColor]; maru.layer.cornerRadius = 4.0;//角の丸み 値が大きいほど丸い maru.clipsToBounds = YES; [self.view addSubview:maru]; }
#ifdef DEBUG NSLog(@"debugはこっちを通る"); #else NSLog(@"release,distributionはこっちを通る"); #endif
NSArray * array=[NSArray arrayWithObjects: @"a",@"b",@"c",@"d",@"e",nil]; for(NSString*obj in [array reverseObjectEnumerator]){ NSLog(@"word=%@",obj); }eから順にaまで出力されます。よしよし。
BOOL stringflg = [obj isKindOfClass:[NSString class]];
//全再描画 [drawView setNeedsDisplay]; //一部再描画なら [drawView setNeedsDisplayInRect:CGRectmake(0,0,100,100)];をする。注意したいのはdrawViewが元々透明でなければ
drawView.opaque=YESdrawRectで描いたものはUIViewの背景色みたいな扱いだから
int c = ( a>b ? a+b : a-b); NSLog(@"c=%d",c);
[[NSNotificationCenter defaultCenter] removeObserver: self];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"notificationname" object:nil];