Redirecting… Click here if you are not redirected.
imp_implementationWithBlock()という、BlockからIMPを作り出す関数がiOS 4.3 or Lionから使えるようになったみたいなので、これを使って実行時にインスタンスメソッドを追加する実験 例えば、モーダルウィンドウをクローズした時に自動的にstopModalするコードは下のようになる。簡単。*1 /* CLANG_ENABLE_OBJC_ARC = YES */ #import <Foundation/Foundation.h> #import <AppKit/AppKit.h> #import <objc/runtime.h> ... NSApplication *application = [NSApplication sharedApplication]; BOOL (^windowShouldClose)(id, id) = ^(id self,
SharedLibraryを用いたSystemCallのHook¶ dlsym/dlopenを用いた動的なSharedLibraryのLoad undefined symbol: dlsym と怒られる場合は、コンパイル時に-ldlを入れてください。 概要¶ LD_PRELOADを利用すると、shared libの関数をhookできる。 ただし、本来の関数名を他のアドレスに向けてしまうため、処理後に本来の関数をCALLするには、hookした関数内から元の関数を呼び出す必要がある。 この手法を実現するにあたって必要な要素となる、dlsymを使った動的なSharedLibraryのLoad方法について述べる。
iOS6から追加されたUICollectionViewを弄ってみたのでそのメモ。 このUICollectionViewは、コンテンツを表示する土台を作って、セクションの数を決めて、セクション毎のセルの数を決めて、セルを返す、というように「UITableView」に似ています。 公式のリファレンスは以下になります。 UICollectionView Class Reference - Apple Developer とりあえず動くサンプルとりあえず動くサンプルです。 ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewController <UICollectionViewDelegate, UICollectionViewDataSource> { UICollectionViewFlowLa
これからiOSアプリ開発をやりたい!という人へ 自分が実際にiOSアプリ開発をやって、便利だったと思う情報を残しておきます。 これからアプリ開発やりたいという人の参考になれば。 iOSアプリ開発の第一歩 まずは間違いなくMacを買うこと。 Macを書いましょう。Windowsじゃ開発できません。 MacじゃないとiOSアプリの開発はできないので、 これがないとお話になりません。。。 インストールしておくもの 基本的にXcodeさえインストールしておけばアプリの開発はできます。 Mac App Storeからダウンロードできます。 実機インストールやApp Storeに公開したい場合は、 iOS Developer Programを購入する必要があります。 まずはこれを読むべき Appleのドキュメント集(日本語訳Version) https://developer.apple.com/jp
導入 最近、最近ふと 詳解 Objective-C 2.0 初版 を手に取る(電子化しているので実際に手に取るのは Kindle ですが)機会がありました。 もちろん最新の3版も持っているのですが、初版と比べて読み進めてみると色んな事を振り返る事ができて楽しいんですね、もう歴史です。 言うまでもなく、Objective-C は僕が関わってきた約5年近くだけでも凄まじい発展を遂げています。 コミュニティも WWDC や Developer Forum を初めとして、最近では CocoaPods など 3rd party のものまで活発になっています。 そのような環境の中でも、たまにそれらの範囲外では数年前の「構造」のままのコードを見る事があったりもします。 「構造」と少々分かり辛く書いているのは、以下のような「コーディング規約」を超えた考え方だと思ったので分けて書いています。 もちろんどちら
マルチスレッド処理のやり方がいくつかあるが、それぞれ試してみた。 GCDが最近の書き方らしいけど、まだまだgithubに上がっているライブラリをみると NSOperationを使っていたりするので、ひと通りやってみました。 // part1 シンプルなパターン [self performSelectorInBackground:@selector(hoge) withObject:nil]; [self performSelectorInBackground:@selector(fuga) withObject:nil]; // part2 NSOperationをつかう NSOperationQueue *queue = [NSOperationQueue new]; MyOperation *operation = [MyOperation new]; [queue addOperat
位置情報を取得するプログラムを書く時に使用する locationServicesEnabled はiOS4.0からはクラスメソッドですがそれ以前はプロパティだったりします。 そのため、クラスメソッドの locationServicesEnabled が存在するかどうかをチェックして存在しない場合はプロパティにアクセスする様に記述します。 しかし、その様に記述するとこの様な「それって廃止予定のプロパティですよ」とワーニングが発生します。 warning: 'locationServicesEnabled' is deprecated [-Wdeprecated-declarations,8]この様な場合はちゃんと分かっている上で記述しているのでワーニングを非表示にしたい所です。 調べてみた所、以下の様な #pragma を該当する部分の上下に記述するとワーニングのチェックを行わない様に出来る
明けましておめでとうございます。神トラ2クリアしました。 Facebook iOS Appのように、一覧をスクロールした際にUINavigationBarやUIToolbarを隠してフルスクリーン表示をするためのライブラリを作りました。 https://github.com/ninjinkun/NJKScrollFullScreen スクロールをフックしてフルスクリーン化をdelegateで通知する部分と、フルスクリーン時の動きを定義する部分を分離した設計になっています。 同じようにフルスクリーン化を行うYIFullScreenScrollというライブラリがあったのですが、UINavigationBarの移動などフルスクリーンの動きの部分が一体になっており、Facebook appぽい挙動にカスタマイズし辛かったので、動きを分離した設計のライブラリを別に作ることにしました。all-in-o
話題に遅れること1年半、例のPerfumeのモーションキャプチャデータを動かすことをやってみようと思います。 といっても、データと一緒に oF のサンプルアプリが既に公開されてるようなので、それを試しつつ、iOSで動くように改修しつつ、 どんな実装になってるのかざっと把握する という感じで見ていきます。 (完成品のスクショ) ちなみに、openFrameworks Advent Calendar 2013 - Qiita の13日目の記事になります。 モーションキャプチャデータとサンプルをダウンロード モーションキャプチャデータはこっちから、oFサンプルはここからダウンロードできます。 サンプルアプリのビルド 適当なサンプルプロジェクトを開いて、Base SDKをlatestに変更したのちビルドしてみると、'tr1/memory' file not found エラーが出る。 で、 [he
こんにちは、去年は Cocos2d-x の記事を書いたのに一度も Cocos2d-x を使ったことがない @Gemmbu です。 今年は久しぶりに Objective-c でごりごり開発していました。 その中から C で出来るちょっと面白いネタを。 Method Swizzling とは? 簡単に説明すると、既に定義されているメソッドの実装を入れ替える機能です。 例えば以下のような Foo クラスを定義します。 // Foo.h @interface Foo - (void)func; @end // Foo.m @implementation Foo - (void)func { NSLog(@"call func"); } @end 以下のように使います。 Foo *foo = [Foo.alloc init]; [foo func]; // -> call func が出力される こ
矢口裕也です。 Advent Calendar 10日目はiOSのUITableViewの話をします。 ぼやき iOSアプリを開発していると70%くらいの時間はUITableViewに費やしている気がしてきます。 UITableViewは非常にめんどうなものですが、パフォーマンスがシビアでかつユーザーの快適さに直結するものなので大いに手間をかける価値があります。 この記事ではガクガク処理落ちするUITableViewを例として改善していきながら快適なUITableViewのつくりかたを解説します。 目的 以下のケーススタディでは次の目的でコードを改善していきます なめらかに動くようにする ここでのポイントは実際速くなくてもユーザが快適に感じればOKである、ということです。処理速度が高速である必要はありません。 戦略 UITableViewでのパフォーマンス問題は次の2点であることが多いです
xcrun コマンドを使用します。 $ xcrun lipo -info <path_for_binary> たとえば AppSocially SDK について調べてみると、 $ xcrun lipo -info AppSocially.framework/Versions/A/AppSocially 下記のように、出力されました。 Architectures in the fat file: AppSocially are: armv7 armv7s i386 arm64 armv7, armv7s, arm64 と、i386(シミュレータ用)のアーキテクチャに対応していることがわかります *1。 lipo コマンドと、-info オプションについて lipo とその -info オプションについて man コマンドで調べると $ man lipo 下記のように説明されています。 lip
This is a blog post by iOS Tutorial Team member Matt Galloway, founder of SwipeStack, a mobile development team based in London, UK. You can also find me on Google+. Let’s say you want to find some information inside a web page and display it in a custom way in your app. This technique is called “scraping.” Let’s also assume you’ve thought through alternatives to scraping web pages from inside you
ソースが公開されているSafari向けSIMBLプラグインをズラっと羅列してみたいと思います。 全てのソースを読んだわけではないのですが、部分的にSafariGesturesを作るときに参考にしたりもしました。 SafariWheelTab ホイールジェスチャ機能を提供するプラグインです。 SafariGesturesを作るときのベースに使わせていただきました。 コメントが充実していて素人の僕には非常にありがたかったです。 すごくシンプルなのでどうなってるのかがわかりやすいです。 ForgetMeNot WindowとTabのUndo機能を提供するプラグインです。 posingとmethod swizzlingを使ってhackしています。 SafariGesturesのVer0.0.4以前ではSafari(WebKit)のメソッドを呼ぶのに そのメソッドをいちいちカテゴリで追加していました
OS XではMarvericks (10.9) から「游ゴシック体」と「游明朝体」が標準搭載されたことで話題になりましたが、実はiOSでも6以上からこれらのフォントが使用できます。 iOS 6から追加ダウンロードフォントという仕組みが導入され、游ゴシック体などのフォントはその追加ダウンロードフォントという形で提供されています。 アプリケーションからは必要に応じてフォントをダウンロードして利用します。 フォント一覧 iOS 6で使えるフォントはアップルの下記のページに記載されています。 このページの下の方に追加情報として記載されているフォントがダウンロードフォントになります。 iOS 6:フォントリスト (http://support.apple.com/kb/HT5484?viewlocale=ja_JP&locale=ja_JP) 上記のページに記載されている追加ダウンロードフォントのう
http://www.cycript.org/http://www.iphonedevwiki.net/index.php/Cycripthttp://www.iphonedevwiki.net/index.php/Cycript_Tricksいっちゃん上が、正規サイトみたいだけど、情報少なすぎ。下の2つくらいは最低限必要だな。モールス入力IMEとか、これでつくってもいいのかもしれない。どうせ、自分しか使わないので。フックとか実験もしやすそう。http://code.google.com/p/networkpx/source/browse/etc/std.cy標準的に必要な関数群http://code.google.com/p/networkpx/source/browse/etc/classDump.cyCycriptのためのclass-dump?http://mobile.twitte
iOS5で鳴り物入りで登場して、その仕組みがMountain Lionにも取り入れられたと錯覚しがちな通知センターであるが、実は通知センターという考え方は、はるか昔のNeXTSTEPの頃からあった。その証拠に、通知センターを実現するクラス(NSUserNotificationCenter)はNSで始まっている。NSはNeXTSTEPの頭文字なのだ。 NSUserNotificationCenterは、Mountain Lionで導入された、その名のとおりユーザーのための通知センターである。一方、NeXTSTEPの頃から使われている通知センターは、NSNotificationCenterである。Userが抜けている。NSNotificationCenterは、オブジェクト(プロセス)間の通信のための通知センターである。オブジェクトに通知することが目的なので、GUIとして視覚的に見せていないの
UITableViewなどのスクロール系のViewでサムネイル画像を出す場合、下記のような記述ではメインスレッドで画像がロードされるため、ユーザーのUI操作に影響が出てしまいます。 NSURL *url = [NSURL URLWithString:@"URL"]; NSData *data = [NSData dataWithContentsOfURL:url]; [instanceOfUIImageView setImage:[[UIImage alloc] initWithData:data]]; こういう場合は非同期通信を行うのが定石だと思いますが、参考になるサンプルがあまり無かったので試しに作ってみました。UIImageViewを継承したUIAsyncImageViewクラスです。 UIAsyncImageView.h 画像URLの指定と、通信中止用のメソッドのみ定義しています。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く