Objective-C

NicoNicoDesktop 改良メモ

http://github.com/sugyan/NicoNicoDesktop/commit/7d0d7a5a1bda29588b177fdac09250eb91174ea3#diff-0 表示させる文字列の長さに応じてNSWindowの大きさを調整したいなーと思ったもののやり方がよくわからなくて困っていたのだけど、どうやら以下の方法でサ…

ニコニコ動画っぽくテキストをデスクトップに流すCocoaアプリを作ってみた

YAPC::Asia 2010 で、JesseがプレゼンにTwitterのタイムラインをニコ動っぽく流していて、同じようなことやってみたいなーと思ったものの、JS使ってやってるとそのブラウザ上でしかできないし、どうせならMacのCocoaアプリとしてどのアプリが起動していても…

iOS4時代の非同期HTTP通信

SDKで始めるiPad/iPhoneアプリ開発の勘所(4):iOS 4のSDKで、Twitterを使ったiPhoneアプリを作る (1/4) - @IT SDKで始めるiPad/iPhoneアプリ開発の勘所(4):iOS 4のSDKで、Twitterを使ったiPhoneアプリを作る (2/4) - @IT を読んだのだけど。 NSURLCon…

Objective-C向けOAuthライブラリ"OAuthCore"を使ってTwitter APIを叩いてみる

Sabotter for iPhoneのアップデートに向けてTwitterのOAuth認証の部分の実装をどうするか検討していて。 Google Code Archive - Long-term storage for Google Code Project Hosting.にあるライブラリだとなんだか巨大すぎて、もっと軽く扱えるもの無いのか…

Cライブラリを使ってiPhoneからTwitter APIを叩いてみる

libcurlをiPhoneアプリからつかう方法 (ついでにopensslも) | tech.kayac.com - KAYAC engineers' blog を読んで、面白そうだなーと思い Cの世界でTwitter OAuthを叩くところまでやってみようと思った。調べたらOAuth用のCライブラリもあるようで。 liboauth…

NSSetのintersectsSetとNSMutableSetのintersectSet

"intersect"の後に"s"が付くか付かないかだけの紛らわしい名前なので注意。 NSSetのインスタンスメソッド"intersectsSet"は、「対象のNSSetインスタンスと、引数で渡したNSSetインスタンスで共通の要素を含んでいるか否かをBOOL値で返す」というメソッド。 N…

Objective-CでTwitter APIを使う 色々

Twitter APIの認証 Twitter APIの使用は、現在"BASIC認証"と"OAuth"の2通りの方法が用意されている。が、今年6月(?)でBASIC認証が使えなくなるという噂で、今後はAPIを使用するのにはOAuthを使用する必要が出てくるようだ。 まぁBasic認証はパスワードだだ…

base64エンコーディングを実装せずにBASIC認証を通す方法

もひとつObjectivc-Cネタ。 Twitter APIのようにBASIC認証がかかっているURLにアクセスする際、NSMutableURLRequestに - setValue:forHTTPHeaderField: でBase64エンコードした文字列をヘッダに突っ込む、という方法しか知らなくてそうしてたのだけど、どう…

protocolと関連させたクラスの定義方法

最近またiPhone触り始めて、新たに知ったことなどがあったのでメモ。 「delegateを持ち、自分で定義したコールバックを行うクラスの定義方法」について。 ヘッダでの宣言 例としてNSXMLParserをラップしてXMLからある要素を5回検出したときにコールバックを…

Sabotter for iPhone のソースコードを公開しました

リリースされてから随分時間が経ってしまいましたが、「Sabotter for iPhone」のソースコードを公開しました。 GitHubで晒しています。 http://github.com/sugyan/Sabotter-for-iPhone/tree/master NatsuLiphoneのソースコードを非常に参考にさせていただい…

メソッドの引数や返り値を調べる

指定したクラスの、実装されているメソッドを列挙する - すぎゃーんメモの、続きのようなもの。 クラスに実装されているメソッドの一覧を取り出すことはできたので、今度は一つ一つのメソッドについての詳細を調べる。 例えばNSIndexPathの中にある"initWith…

指定したクラスの、実装されているメソッドを列挙する

#import <Foundation/Foundation.h> #import <objc/runtime.h> int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; unsigned int i, count; Method *methods; Class target_class = [NSIndexPath class]; // ターゲットのクラス // インスタンスメソッ</objc/runtime.h></foundation/foundation.h>…

TerminalOutputzでCtrl+J, Ctrl+Mもリターンキーと同等に扱う

id:yuroyoroさんの作ったTerminalOutputz。 MacのTerminal.appでの打鍵数をoutputzに送るSIMBL Pluginを作ったよ。 - ( ꒪⌓꒪) ゆるよろ日記 ようやくソースを読んで何をやっているのかそれとなく理解したので、自分用に改変してみた。 自分はEmacsキーバイ…

SIMBL Plugin の作成、ログ出力

下記リンクを参照にSIMBL Pluginについて調べたところ、 http://culater.net/wiki/moin.cgi/CocoaReverseEngineering#head-f1f1d6fd4cfed4ecd0fbf0c5a94cf095928cdfbe ようやく理解したのは、とりあえずXcodeで「Bundle」→「Cocoa Bundle」でプロジェクトを…

SIMBL Pluginについて調べる

id:yuroyoroさんが作ったTerminal.app用のOutputz向けSIMBL Pluginというのがとても興味深く。 MacのTerminal.appでの打鍵数をoutputzに送るSIMBL Pluginを作ったよ。 - ( ꒪⌓꒪) ゆるよろ日記 アプリケーションの機能拡張にこんな方法があったのかー!!全…

UITabBar、UINavigationBarの高さ

UITabBarController, UINavigationControllerを使っているときに、TabBarやNavigationBarによって占有された残りのView領域の大きさを取得したい。 そう思って色々調べたもののなかなか見つからなかった。とりあえず高さ480からステータスバーで20、あとはNa…

NSDictionaryのキーは変えられない(3) 無理矢理キーを変える

NSDictionaryのキーは変えられない - すぎゃーんメモ NSDictionaryのキーは変えられない(2) 値は変えられる - すぎゃーんメモ の続き。しつこくやってみる。 その1では、keyにNSMutableStringを入れて中身を変更しようとして失敗したのだけど、もっと単純な…

NSDictionaryのキーは変えられない(2) 値は変えられる

NSDictionaryのキーは変えられない - すぎゃーんメモの続き。 そういえばkeyにばっかり着目していて値の方を全然みてなかった。 とりあえずkeyと同様に中身を見てみることに。 #import <Foundation/Foundation.h> int main(int argc, char *argv[]) { NSAutoreleasePool *pool = [[NSA</foundation/foundation.h>…

NSDictionaryのキーは変えられない

NSDictionaryのkeyは重複してはいけない。 じゃあ、インスタンスを作った後にキーを変更したりもできないのか? 「keyとvalueにそれぞれオブジェクトが格納されているだけ」と考えると、keyに可変なインスタンスを入れておけば格納された後に変更することも…

Objective-CでBase64エンコーディング

何とか自分なりにBase64エンコードのプログラムを書こうと頑張ったけど、やたら時間かかった上にクソみたいな見づらいモノしかできなかった orz 才能ねぇーーー #import "Base64Encoder.h" @implementation Base64Encoder + (NSString *)encodedStringWithBa…

今度はUIViewでハマってた

UIViewのtagに0を使用してはいけない。なぜならデフォルト値が0だから。 値を設定するときは0以外の値にしておかないと、viewWithTagで呼び出そうとしたときに他のtag値設定していないUIViewインスタンスと区別がつけられなくなってしまう。 値はenumでも指…

NSMutableStringの、NSMutableDictionaryへの格納方法

NSMutableStringを使って一時的に格納してある文字列を、適度なタイミングでNSMutableDictionaryに格納しようと思って、とは言えインスタンスをそのまま格納するのでは後でStringの内容が変わったときに格納されたものもすべて変わってしまう、ということで …

コマンドラインからビルドを行う

とりあえず、こんなカンジでビルドはできるっぽい。 $ xcodebuild -sdk iphonesimulator2.0 -configuration Debugけど、実行ができない… コマンドラインからSimulator上のiPhoneアプリを実行/デバッグ実行するにはどうしたらいいんだろう?

selectorがよくわからずハマる

@selectorで指定したSEL型変数を引数として渡そうとしたら何度やってもうまくいかず、色々変更しているうちに、何故かNSLogの変更とかも反映されていなくなっていることに気付き、何かがおかしい、と思ってbuildフォルダを全削除してビルドしなおしたらウマ…

今さら知った

NSLogって標準エラー出力だったんだ!?