2012-06-01から1ヶ月間の記事一覧
FixedSpaceをボタンとボタンの間に入れればよい。 以下サンプルコード。 [self pushNavigationItem:[[UINavigationItem alloc] init] animated:NO]; UIBarButtonItem *moveToPreviousGroupButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarB…
・以下のようなコードでviewのsizeを変更しても、frameのsizeは変更されない。boundsのsizeは変更される。 self.view.transform = CGAffineTransformMakeScale(2, 2); ・boundsのsizeでframeのsizeを上書きしたい場合は以下のコードを実行する。ただし、fram…
以下のコードで全削除可能。dealloc時などにどうぞ - (void)dealloc { while (self.view.gestureRecognizers.count) { [self.view removeGestureRecognizer:[self.view.gestureRecognizers objectAtIndex:0]]; } }
以下のコードでUIImageViewに対するジェスチャーを取得しようとしたら、取得できず困った。 - (void)viewDidLoad{ [super viewDidLoad]; self.zoomInGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(zoomGestu…
UIViewのtransformプロパティにCGAffineTransformを渡すとViewの変形ができる。 ピンチインやピンチアウトすると拡大・縮小し、指を離すと元の大きさに戻るViewのコードは以下のようになる。 - (void)viewDidLoad{ [super viewDidLoad]; UIPinchGestureRecog…
以下のように%pを使えばよい。 NSLog(@"%p", self); 参考:objective c - NSLog an object's memory address in overridden description method - Stack Overflow
以下のコードでSleepさせられるらしい。なるほど //次のメソッドの実行を0.5秒遅らせる(AAAがログに表示されるのが0.5秒遅らせる) [NSThread sleepForTimeInterval:0.5]; NSLog(@"AAA"); 参考:http://superdiszo.sakura.ne.jp/WP/?p=133
以下のコードを実行すると [UIViewController init]の後で[UIViewController initWithNibName]が呼ばれる。 [[UIViewController alloc] init]; initとinitWithNibNameの両方で初期化メソッドを定義している場合などは二回呼ばれてしまうので注意。 そもそもi…
以下のようにloadViewを定義していて、かつ initメソッド内でself.viewにアクセスしている場合、 無限ループになる。 - (void)loadView { [super setView:self.tempView]; self.tempView = nil; } - (id)initWithView:(GMGridView *)view{ self = [super ini…
以下のようなコードを書いたらViewとControllerの参照関係がおかしくなった。 - (void)viewDidLoad { [super viewDidLoad]; if (self.delegate){ self.currerntViewController = [[ChartGridViewController alloc] initWithView:self.chartGridView]; self.s…
UIViewControllerはXIBファイルと1対1になるよう作るのが基本だと思うが、それだとXIBファイルが細切れになりすぎてわかりにくい。 例えば、UITableViewControllerを継承したMyTableViewControllerを作った場合、UITableViewController.xibはTableView一つだ…
例外についてのいい資料があった。 例外設計における大罪 特にガード句についての指針はなるほどと思った。 ・過剰に防衛するのではなく誰の責任かを明確にする 上記とは関係ないが、 個人的にはクラス内からのメソッド呼び出しの場合は事前条件のチェックは…
下記のようにループを回して配列を処理するというのはよくあるケースだと思う。 for(int i = 0;i < count;i++){ Model *m = [ary objectAtIndex:i]; } が、これだとコンパイラ警告が出る。理由はobjectAtIndex:(NSUInteger)indexなので、intとNSUIntegerで型…
以下のようにDelegateプロパティをクラスAに作って、 @property (nonatomic, weak) NSObject *delegate; そのクラスの親クラスでdelegateを設定して self.handler.delegate = self; クラスAからdelegateオブジェクトにメッセージを送信するとEXC_BAD_ACCESS…
ViewControllerを作る上で大事だと思うことを挙げてみる ・ViewControllerはツリー構造にする。ツリー構造は画面上の領域の親子関係と一致させる。 言い換えると子のコントローラのViewは必ず親のコントローラのSubViewになっている。 各ViewControllerは画…
以下のDelegateメソッドを使うとUITextFieldに文字を入力するたびに文字入力前の文字列と入力した文字が取得できる。 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)inputText …
fireメソッドを実行した日時かと思った。。まぎらわしい
以下のコンパイルエラーが出た。 linker command failed with exit code 1 (use -v to see invocation) 他のエラーメッセージにDuplicated〜とあったが、同じ名前のクラスが二つあったのが原因だった。 namespaceって区切れないんだろうか。アプリ全体で名前…
一定間隔で何度か処理を実行させたい場合、以下のようにする。 >|objc|NSTimer *tUpdate; NSTimeInterval tiCallRate = 1.0 / 15.0; tUpdate = [NSTimer scheduledTimerWithTimeInterval:tiCallRate target:self selector:@selector(updateScore:) userInfo:…
以下のようなコードはコンパイルエラーになる。 @interface FlipLabel (CustomMethod) @end @implementation FlipLabel (CustomMethod){ NSString *name; } @end synthesizeも使えない。 >|objc|@interface FlipLabel (CustomMethod) @property NSString *na…
たとえば、performSelectorの戻り値としてNSNumberかNSDateが返る場合 NSObject *property1 = [obj1 performSelector:@selector(objectWithStockAttribute:) withObject:sortByStockAttribute]; NSObject *property2 = [obj2 performSelector:@selector(obje…
あるオブジェクトのインスタンス変数に何を代入しても値が0から変わらず、なぜ???となっていたが単にオブジェクトの初期化を忘れていてnilになっていただけだったorz 具体的には下記のようなコードで、ここを実行する前にgroupにオブジェクトを代入してな…
autoshrinkをONにしている場合、自動縮小されたフォントサイズは以下で取得できる。 CGFloat actualFontSize; [label.text sizeWithFont:label.font minFontSize:label.minimumFontSize actualFontSize:&actualFontSize forWidth:label.bounds.size.width li…
マルチスレッド環境でEXC_BAD_ACCESSが起こってしまい、困ったのでデバッグ方法を調査。 下記サイトを参考にmalloc-historyを出してみた。 malloc-historyは一番上が最後の操作なので上から順に見ていって自分が書いたコードがあればチェックする。 malloc-h…
コンソールに以下のメッセージが出た場合は無限ループに陥っていることが多い。まあtimeoutしてるからそりゃそうだろって感じですがEXC_BAD_ACCESSを見るとすぐぶらさがりポインタを探す癖がついてるもんで注意してないとはまる。 Signal received: EXC_BAD_…
XIBファイルを読み込んでUIViewControllerを初期化する場合、XIBファイルで定義されているUIコンポーネント(UITextFieldとか)はinitWithCoderメソッドで初期化される。 initWithFrameを使うと勝手に思っててちょっとはまった。 initWithCoderってXIBを使わ…
OSSライブラリを取り込んでiPadアプリをビルドすると以下のエラーメッセージが出た。 Ld build/Debug-iphonesimulator/〜 normal i386 Undefined symbols for architecture i386:これはFrameworkへの参照が足りないことが原因。 QuartzCoreへの参照を追加し…
多くのサイトでデバイスの向きを取得する方法は以下であると書いてある。 UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; が、これを使うとデバイスの向きの判定が間違うことがあった。具体的には横向きの状態でUIDeviceOrient…
タイトルで書いてあるように設定するとテキストフィールドをタップすると落ちるようになる。 Subclassing UITextField, Delegate issue. - iPhone Dev SDKによると無限ループに陥るらしい。 回避策はDelegate用クラスを作ってそっちにdelegateすること。 ス…