でも、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"];
}