u16suzuの blog

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

2013-01-01から1年間の記事一覧

make weak self with typeof

__block typeof(self) weakSelf = self; Class Nameを直接指定するかわりに typeofがつかえる. 勉強会で教えてもらった. typeof使うとコピペできる. だがしかし, ブレークポイントでステップ実行する際 この行が別スレッドで 2度くらい 実行されているような…

メモNSArrayのリテラル記法から NSMutableArrayを作る

NSArray* array = @[] NSMutableArray* array = @[].mutableCopy;

UIButtonを押下時にハイライトさせない

次のように書けば良い. btn.adjustsImageWhenHighlighted = NO; ヘッダファイルを以下に示す. @property(nonatomic) BOOL adjustsImageWhenHighlighted; // default is YES. if YES, image is drawn darker when highlighted(pressed) @property(nonatomic) …

[ios] Objective-C の BOOL型は int型でどのように定義されているのか

Objective-C の BOOL型はint型で以下のように定義されている. YES: 1 NO: 0 objc.h ヘッダファイルにもそのように定義されている. 忘れたら BOOLの定義を ctrl+gで見れば良い. objc.hでの定義内容を以下に示す. /// Type to represent a boolean value. type…

コマンドの履歴検索でついつい行きすぎてしまうあなたに

ctrl+r によるコマンドの履歴検索(bck-i-search)において、ctrl+rを連打していると、目当てのコマンドがあったにもかかわらずついつい行きすぎてしまうことがある。 その対策として .zshrc に以下を記入すれば、ctrl+s で1個前の検索に戻ることができる。 つ…

ディレクトリ内のファイル名を一括で変更する

rubyの場合 # 1.jpg => pict1.jpg に変更 Dir.foreach('.') do |f| if f =~ /.*jpg/ puts f system "mv #{f} pict#{f}" end end shellの場合 1.jpg => pict1.jpg に変換. {}にfindの値が入る. {}は -I{}で指定している. $ find * -print0 -type f | xargs -0…

xargs

hogeディレクトリの中身のファイル名のディレクトリをカレントディレクトリ以下に生成する. $ ls hoge/ | xargs mkdir

UIEdgeInsets

UIEdgeInsets CSSにおける paddingみたいなもの. 元となる CGRect から paddingを適用した CGRect を生成することができる. UAModalPanelで使用されている. CGPointを考えなくてもいいところとサイズの計算を自分でしなくても良いところが便利. CGRect CGPoi…

UIScrollViewが持つ2つのサイズについて

Scroll Viewは2個のView Sizeを持っている. たまにその事実を忘れるというか,contentViewの存在を忘れるのでメモ. スクロールビューを窓と窓に表示される風景に例えて書くと... サイズその1. viewのSize: 窓のサイズ. scrollView.frameで指定する. サイズそ…

.pch ファイルで NSStringWithFormat を使う

.pch ファイルで NSStringWithFormat を使うことができる. URLを指定するときに便利 #define BASE_URL @"http://localhost:3000/" // 各機能での接続先URL #define URL_SETTINGS [NSString stringWithFormat:@"%@%@", BASE_URL, @"v1/settings.json"] #defin…

Mac で ファイルの md5 hashをとる

コマンドは以下のとおり $ openssl md5 file.txt

UINavigationBarに一括で画像をあてる

AppDelegate.mで以下のように書けば. アプリ内のすべてのナビゲーションバーに適用される. // Design UIImage *navigationBarImage = [UIImage imageNamed:@"topbar"]; [[UINavigationBar appearance] setBackgroundImage:navigationBarImage forBarMetrics:…

deep copy

deep copy するには copy methodを呼べばよい NSMutableArray *hoge = @[@1, @2, @3].mutableCopy; NSMutableArray *fuga = [[hoge copy] mutableCopy]; hoge[0] = @99; NSLog(@"hoge : %@", hoge); NSLog(@"fuga : %@", fuga); result 2013-07-04 03:26:25.…

UIAlertView

BlocksKit を使うとデリゲート書かなくて済む. 読みやすい. アラート出すだけなのにデリゲート書く必要があるのはやっぱり大げさだなぁ. UIAlertView *al = [UIAlertView alertViewWithTitle:@"OK?"]; [al addButtonWithTitle:@"OK" handler:^{ [self.naviga…

UITextAlignmentCenter series are Deprecated in iOS6

Use NSTextAlignmentCenter instead.

SubViewsをすべて消す

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

AppDelegateをグローバルに使う

.pchファイル に書いておくと appをグローバルに使える #import <AppDelegate.h> // 共有オブジェクト #define app (AppDelegate *)[[UIApplication sharedApplication] delegate] #define SharedAppDelegate (AppDelegate *)[[UIApplication sharedApplication] delegate]</appdelegate.h>

UITabBarControllerの使い方

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

Rails Admin でナビゲーションに表示されるモデルの順番を指定する

Change models order in navigation By default, they are ordered by alphabetical order. If you need to override this, specify a weight attribute. Default is 0. Lower values will bubble items to the top, higher values will move them to the bo…

プロダクション環境でマイグレーション時に superclass mismatch for class Word エラーが発生した

[sakura] RAILS_ENV=production bundle exec rake db:migrate --trace ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment ** Invoke db:load_config (first_time) ** Execute db:load_config ** Execute db:mig…

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

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

データを永続化する。

データを永続化するというのは、iPhoneにデータを保存するということ。 NSUserDefault でもデータ保存はできるけど、これはユーザが設定したアプリの設定項目に使用するべきで アプリ内で定義したモデルの情報を保存することに使うべきではない。 以下の方法…

配列を小さい配列に分割する

a = [1,2,3, 4,5,6, 7,8,9, 10] res = [] while a.size > 0 res << a.slice!(0, 3) end p res # => [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10]]

seedファイル名を指定して rake db:seed

この記事参照して lib/tasksを追加した. http://d.hatena.ne.jp/yuunachan/20120921/1348183289 seedファイル名を指定して rake db:seed できる $ rake db:seed_from_file SEED_FILENAME='hogehoge.rb' rake -Tすると追加されたタスクが表示される. rake db:…

Model Objectの複製を作る

あるユーザのデータをもとに、テストデータを作りたいときに使います。 とくにその作りたいデータのカラムが多い時便利です。 u = User.first.dup >> u.save (0.2ms) BEGIN (0.7ms) COMMIT => true

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…

UIButtonの設置

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; btn.frame = CGRectMake(10, 50, 100, 30); [btn setTitle:@"push" forState:UIControlStateNormal]; [self.view addSubview:btn];

UITableViewの使い方

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 使用例 @interface ViewController () <UITableViewDelegate, UITableViewDataSource> @propert</uitableviewdelegate,>…