u16suzuの blog

日々学んだことのメモブログです。

Objective-C

SubViewsをすべて消す

テーブルビューのセルでよく使います NSLog(@"before : %@", [cell.contentView subviews]); for (UIView *view in [cell.contentView subviews]) { [view removeFromSuperview]; } NSLog(@"after : %@", [cell.contentView subviews]);

UITabBarControllerの使い方

AppDelegate.m の中で, こんな感じで書けば良い self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; _tabBarController = [UITabBarController new]; _homeViewController = [HomeViewController new]; _postViewController =…

Objective-C でマルチスレッドプログラミング

マルチスレッド処理のやり方がいくつかあるが、それぞれ試してみた。 GCDが最近の書き方らしいけど、まだまだgithubに上がっているライブラリをみると NSOperationを使っていたりするので、ひと通りやってみました。 // part1 シンプルなパターン [self perf…

CGRect などをNSLogで出力するときに便利な関数

CGRect などをNSLogで出力するときに便利な関数たち NSStringFromCGAffineTransform(<#CGAffineTransform transform#>); NSStringFromCGPoint(<#CGPoint point#>); NSStringFromCGRect(<#CGRect rect#>); NSStringFromCGSize(<#CGSize size#>);

gem shenzhenで ターミナルからアプリをビルドしtestflightを投げる

iphone アプリのビルドとテストフライトの配布をコマンドラインで行なってくれる shenzhen という gemがあります。 日本語情報が見当たらなかったので、記事にしてみました。ちょっとしたハマりポイントがいくつかありました。 ちなみに shenzhen という名称…

NotificationCenter

// pchファイルで通知を定義 #define notification @"notification" // Notification 送信 NSNotification *notification = [NSNotification notificationWithName:HideResultViewNotification object:self]; [[NSNotificationCenter defaultCenter] postNot…

JSFlatButtonの使い方

JSFlatButtonという大好きなObjective-C のライブラリがありまして、それの使い方です。 // ボタン JSFlatButton *button = [[JSFlatButton alloc]initWithFrame:CGRectMake(0, 100, 320, 50)]; button.buttonBackgroundColor = [UIColor colorWithRed:0.74f…

ボタンに影をつける

button の layerに setShadow系のメソッドを呼べば良い。 - (void)addShadow:(UIButton*)button { [button.layer setShadowColor:[[UIColor blackColor] CGColor]]; [button.layer setShadowOffset:CGSizeMake(0, 3)]; [button.layer setShadowOpacity:0.925…

透明なモーダルビューを自作する

こんな感じ。MyViewControllerは表示したいものを指定。windowに addSubviewする。 MyViewController *vc = [[MyViewController alloc]init]; AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; [delegate.window addSub…

ブロック変数を定義する

NSString* (^test)(NSString*, NSString*) = ^(NSString* head, NSString* tail){ return [NSString stringWithFormat:@"%@%@", head, tail]; }; NSLog(@"%@", test(@"hoge", @"fuga"));

Sending 'void' to parameter of incompatible type 'void (^)()'

Sending 'void' to parameter of incompatible type 'void (^)()'引数を取らないブロックをとるメソッドに対して、引数を持つブロックを引数として与えたら発生した。

First Responder を取得する

First Responder とはフォーカスが当たっているUIViewのこと。 キーボード入力などの 画面タップ以外の イベントを受け取る UIViewになる。 UIWindow *window = [[UIApplication sharedApplication] keyWindow]; UIView * firstResponder = [window performS…

聖剣伝説2のようなUIがカッコいいiPhoneゲームiPokeMon

iPokeMonはGPS情報を利用したポケットモンスターのようなゲームで、実際の町、国で異なるポケモンが出現し、捕まえることができる。このゲームは 去年 Kjuly さんが大学の卒業プロジェクトとして開発し、実際にアップルに申請した。 しかし、コピーライトの…

cocoapodで platform のバージョン指定

AFNetworking (1.1.0) is not compatible with iOS 4.3 というエラーがでた Podfileを以下のように修正したら直った platform :ios, '5.0' pod 'AFNetworking'

Objective-Cのエラーメッセージメモ

unrecognized selector sent to instance 不正な引数が オブジェクトに渡された

Objective-C で Method定義

メソッド定義とその呼出し。 ここでは、viewCon.h and .mを編集する hogeController.h (void)hello; (void)al: (NSString*)str; hogeController.m -(void)hello{ printf("hello world\n"); } -(void)al:(NSString *)str{ UIAlertView *a = [[UIAlertView all…

xcode のショートカットキー

Cmd + shift + O クラス名で『素早く開く」Ctrl+Cmd+Up/Down .hファイルと.mファイルの切り替えCtrl+Cmd+Left/Right 以前/次のファイルをひらくCmd+任意のシンボルをクリック クリックしたシンボルが定義された所を開くCmd+[ インデントを上げるCmd+]…

Objective-Cのデリゲートについて調べました。

Objective-Cのデリゲートについて調べました。 デリゲートとは、他のオブジェクトから仕事を任されるオブジェクトのこと。つまり、c#でいえば、イベントコールバック 一般に、delegateはプロパティとして宣言される。こんな感じ。 @property (assign) id del…

Objective-C調べたことメモ カテゴリ編

カテゴリの使用カテゴリを使うと、以下のことが可能になる。 既存のクラスへのメソッド追加 クラスのファイル分割 以下の例では、NSStringクラスにSuzuというカテゴリを追加し、Hoge(), lengthAsNumber()メソッドを追加している。メソッドは追加できるけど、…

Objective-C調べたことメモ メモリ管理編

雑然としたメモです。以下の場合、エラーではなくコールされないだけ。 LLのようにObjectiv-Cでは、動的にメソッドがあるかをチェックしている。 hを宣言しない場合はエラーになる。 Hoge *h = nil; [h method];また、NSStringなどの開放してはいけないオブ…