at_yasu's blog

ロード的なことを

Objective-C

Undefined symbols for architecture armv7: "___udivmodsi4"

なんかよく分かんないエラー「Undefined symbols for architecture armv7: "___udivmodsi4"」が出たのでメモ。どうも、ココらへん見るとライブラリをコンパイルする時云々の話みたい。 結果的には、ライブラリをLLVM、ソフトウェアをGCC-LLVM でコンパイルす…

OCUnitマクロ一覧

マクロ一覧 STAssertNil(a1, description, ...) STAssertNotNil(a1, description, ...) STAssertTrue(expression, description, ...) STAssertFalse(expression, description, ...) STAssertEqualObjects(a1, a2, description, ...) STAssertEquals(a1, a2, …

NSArray + Map + Block

MacOSX 10.6 以上ないしは、iOS4.0 以上(3.0以上?)でしかできないけど、NSArray に map関数の実装。 NSArrayのドキュメント見ても意外となかったので、即興で書いてみた。テストあんまりしてないから自信ない。 NSArray+Map.h // // NSArray+Map.h // kis…

Dynamic Property

Pythonばっかいじってたせいで、dir(obj) とかやってしまいそうになりますが、ObjCではうまくいきません(当たりまえですが)。でも、CoreData の Entity は上手く動いてます。そんなわけでできるはずなので探した結果、下記のようなコードになりましたとさ…

起動時に横倒し

横倒しのまま起動した時、それを検知する方法。起動時に、UIDeviceが回転状態を「UIDeviceOrientationDidChangeNotification」で飛ばすみたいだから、それを取得して現在情報を見たらいいみたい。 例 - (void) orientationChanged:(NSNotification *)notific…

Animation の開始と終了を受け取る方法

UIView の beginAnimation:context: を見ていると、どうもAnimationの開始と終了を受け取る事が出来るようで、それを試したメモ書き*1まず、開始と終了時、メッセージを受け取るメソッド - (void) setBeginAnimation:(id)sender { DLog(@"%s sender:%@", __F…

UIScrollView と delegate のメソッド呼び出しの順番メモ

UIViewController を継承してカスタマイズしたクラスを作り、内部ではUIScrollViewのdelegate(UIScrollViewDelegate)も兼ねている。delegate の通知と、UIViewControllerのメソッドの呼び出し順番のメモ。 == 起動 == 2010-05-14 02:24:52.788 SVCTest[9154:…

UIButton と setTitle:forState:

UIButtonですが、何か挙動不審なのでメモ。 forState: の引数、UIControlState ですが、それぞれ(なぜか)論理演算できるようにシフトしているんです。 enum { UIControlStateNormal = 0, UIControlStateHighlighted = 1 << 0, UIControlStateDisabled = 1 <…

いろいろメモ書き。

未検証事項。 iPhone で URL を Safariで開く。 UIApplication を使う [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://goo.gl/"]]; via http://freeek.jp/blog/iphone/115/ Message UI でメール送信 MessageUI.Framework をリン…

UIViewControllerの回転検知とsetViewControllers:animated:

まず回転検知から、 - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation の「UIInterfaceOrientation」がわからなかったので、NSLogで表示させて地道な解析結果。 以下は、シミュレータを正常位の状態から回転さ…

削除ルール

CoreDataで、例えばテーブルAとテーブルBを関連(AはRelate, BはRelates、AとBは1対多)付けた時、A側のデータ(Relate)を消したとする。その時に設定されている削除ルールをもとに、出来る事出来ない事のメモ書き。 Deny(拒否) Aを消そうとしても、Bがある場…

NSPredicate と リレーション (NSPredicate and relationship)

AというテーブルとBというテーブルがあったとして、Aのkeyword は B と一対多の関連を持っているとする。Bのtitleというフィールドは唯一だとし、Aを数件取り出す方法。 NSFetchRequest *req = [[NSFetchRequest alloc] init]; [req setFetchLimit:/* limit …

NSURLConnectionとBasic Authentication

NSURLConnectionで基本認証をする方法。一つに、ヘッダーにbase64にしたユーザ名パスワードを入れる方法がありますが、あまりスマートではないし、ドキュメントをちゃんと読んでいないのがバレますので非推奨。して、このドキュメントには NSURLAuthenticati…

method_exchangeImplementations

method_exchangeImplementationsをすると、メソッドをオーバーライトっぽい事をする。 #import <Cocoa/Cocoa.h> #import <objc/runtime.h> @interface test : NSObject {} @end @implementation test - (void) loadTest { NSLog(@"test::loadTest"); } - (void) loadTestNew { [self loadTes</objc/runtime.h></cocoa/cocoa.h>…

共有インスタンス生成

iPhone Exampleの TheElementsより // we use the singleton approach, one collection for the entire application static PeriodicElements *sharedPeriodicElementsInstance = nil; + (PeriodicElements*)sharedPeriodicElements { @synchronized(self) {…

画面サイズ

iPhone Appの開発をしているのだけど、画面サイズの忘れるのでメモ書き 基本的に、デフォルト画面+StatusBar + (NavigationBar | NavigationBar With Prompt) + tabBar の組み合わせができる。

プロトコル確認

あるオブジェクトが、プロトコルを実装しているか確認する方法 if ([[NSString class] conformsToProtocol:@protocol(NSCoding)]) ...

文字列からクラス生成

NSString型の文字列からClassを作成する方法 NSString clsName = @"NSString"; Class cls = NSClassFromString(clsName); NSAssert1((cls != Nil), @"The %@ is unknown.", clsName); NSString *ptr = (NSString*)[[cls alloc] init];

Objective-C で for..in..

忘れないうちにメモPythonなどのLL言語ではfor..inでループが出来ます。Objective-CでもNSEnumeratorで似たようなことができますが、Objective-C2.0からはfor..in文が使えます。 Objectにfor..inの対応をさせるには、NSFastEnumerationというProtocolを実装…

愚痴

Xcodeで、Objective-Cを書いているとき、ヘッダーファイルにCategoryクラスを書いている時に、()を先に書いてから中のクラス名を書いている時に落ちるバグ。早く直してくれ・・・

NSLogとマクロ

私個人で、よくgccのオプションに-DDEBUGを追加しています。Debugビルドの時にだけ。そしてソフトウェアをReleaseビルドの時、Xcodeで起動するのではなく、単体で起動した時にはNSLogの結果が全て/var/log/messagesystem.logに行きます。ログファイルがかな…

Obj-Cのオブジェクト/クラスの親クラスを知る方法。

クラス(From HMDT)を参考にしていたけど、10.5からはAPIが変わったのでメモ。10.4までだと、クラス名や親クラスは書きのように取って来れます。 const char *class_name = Class->name; // クラス名 const Class super_class = Class->super_class; // 親ク…

Protocolに準じているか

参考日本語ドキュメント - Apple Developer

NSData NSDictionary

何か寝れなかったので作業してました。その際に、NSDataとNSDictionaryを相互変換させる方法のメモ書き。種を明かせば、NSUnarchiver、NSArchiverを使ってます。参考:NSDictionary <-> NSDataNSDictionary から NSData。 NSDictionary *d = ...; NSData* da…

NSDate と HTTP Date

HTTPヘッダのIf-Modified-Sinceの日付型は、「Sun, 06 Nov 1994 08:49:37 GMT」と言う形。そして、NSDate型でその形にするカテゴリクラス。 @interface NSDate (NSDate) + (NSDateFormatter *) HTTPDateFormatter; + (NSDate*) httpToDate:(NSString*)httpDa…

NSStringをURLDecode/URLEncode

NSString型の文字列をURLDecode/URLDecodeするように、機能拡張したカテゴリクラス。 Encodeは文字通り、[a-zA-Z0-9/\-_.]文字列以外*1のを%xxに変換する。てか、CFURL~を使って返しているだけ。Decodeは%xxをバイナリーに変換する。何かぱっと探しても簡単…

Objective-C 2.0 の Property メモ

日本語ドキュメント - Apple DeveloperObjective-C 2.0からは、.構文を使ってオブジェクトのプロパティにアクセスすることができる。 でも実際に中身は、[hoge get変数名] [hoge set変数名:]と言った感じで下位互換を(無理矢理?)保っている。間違ってる所が…