#define TES(__OBJ1,__OBJ2) {\ if(__OBJ1!= __OBJ2){\ [__OBJ1 release];\ __OBJ1 =[__OBJ2 retain];} }
\のあとは何も入力せずに次の行にいくこと。スペースも駄目。
ちなみに"\"の入力はmacの場合「alt+¥」です。
#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"]; }