「Xcode/Interface Builder」カテゴリーアーカイブ

JavaとObjective-C間で正しくAES暗号をやり取りする方法

Objective-CでAES暗号化をする方法を調べると、以下のように書かれている事が多いが、これだとJavaと互換性がない。

;

最初、Java(サーバー)側で暗号がデコードできなくて、色々調べてみたらAES暗号のBlock cipher modeが違うという事が分かった。

解決方法はJava側でObjective-C標準のCipher Block Chaining (CBC)モードに合わせてやるか、Objective-C側の実装を切り替えてやる必要がある。

このブログにObjective-C側の実装を切り替える方法が記載されていたので、参考にして欲しい。

以下のコードを保存して、プログラム中からimportすると上の書き方でJavaで復号できるAES暗号処理が行える。
続きを読む JavaとObjective-C間で正しくAES暗号をやり取りする方法

Objective-Cで正しくURL encode/decodeする方法

以下のような方法でURLエンコード/デコードできると書かれているサイトが沢山あるが、大嘘つきもいい所だ。特殊文字を取りこぼしまくってる。

//encoding
NSString *escapedUrlString
     = [plainString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

//decoding
NSString *decodedUrlString
     = [escapedUrlString stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

多分これで全部フォローできていると思うが、もし足りない文字があればコメントで教えて欲しい。

//encoding
NSString *escapedUrlString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
        NULL,
        (CFStringRef)plainString,
        NULL,
        (CFStringRef)@"!*'();:@&=+$,/?%#[]",
        kCFStringEncodingUTF8 );

//decoding
NSString *decodedUrlString = (NSString *) CFURLCreateStringByReplacingPercentEscapesUsingEncoding(
        NULL,
        (CFStringRef) escapedUrlString,
        CFSTR(""),
        kCFStringEncodingUTF8);

というかURL encode/decodeの標準関数が実はあるけど、俺が気づいていないだけなのか?

Xcode 4.0.1でInterface BuilderのInspectorを表示する方法

Interface BuilderはXcode付属のUIデザイン用のアプリだが、Xcode 4.0.1からXcodeに組み込まれた。今までは別アプリだったのだが、それが一緒になった。

ただ、今までもXcodeから直接起動できたので、特別便利になったという訳ではない。感覚的に起動が速くなった気がするが、計測してないので本当に気のせいかもしれない。

久しぶりに、UIデザインを変更しようと、Xcodeのサイドビューのリソース一覧から.xibファイルをダブルクリックしてみたのだが、UIの画面は表示されるが、コンポーネントが入った一覧が表示されないではないか!ドラッグアンドドロップでUIを描いていくのに、そのもととなるコンポーネントが入っている一覧ビューが無いのである。

色々いじって分かったのが、コンポーネント一覧を表示するには、[option]+[command]+[1]で、ファイルインスペクターを右に表示すると、その下半分が期待したビューであるということ。

UIが一気に変更されると最初の一回が困る。。。