Objective-C

UIPanGestureRecognizerでUIViewを回転させる

すんげー久々の更新にもかかわらず対したネタでもないのが残念だけど。 - (void)panAction:(UIPanGestureRecognizer *)gr { if (gr.state == UIGestureRecognizerStateBegan || gr.state == UIGestureRecognizerStateChanged ) { UIView *view = gr.view; CG…

円運動

円運動を10分くらいで書いてみたけど、 開始点の位置がなぜあそこなのかと、1週したら数秒停止する理由がわかんない。とりあえず後で理由を調べるとしてコードを公開する。 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions…

多重連結バネをやってみた

wonderflにあった面白いものをiPhone(iPad)用に書き直してみるシリーズ。元ネタはここ。 wonderfl build flash online | 面白法人カヤック MeshViewを作る。ViewController.viewにでもはりつけて表示すれば使えまする。 @interface MeshView : UIView { @pri…

iPadの回転対応

iPadアプリを作る場合には、かならず回転に対応した状態で作らなければならぬらしい。結論を先に言うと、Window-basedを使わずView-basedを使えと。回転対応するにはUIViewController追加する。これはきっと常識。 Window-basedなアプリを作成して、そこに必…

NSZombieEnabled を有効にしてEXC_BAD_ACCESSに耐える

アプリ開発をしているときに、EXC_BAD_ACCESSが発生してしまうと原因不明でアプリが落ちてしまう。デバッガでどこで落ちるのか探して、原因となる行を特定して修正ということになるけども、もっと楽な方法が欲しい。そこで出てくるのがNSZombieEnabledを有効…

1枚のマスク画像から色とりどりのインベーダを生成する方法

目的 このマスク画像から色を指定して様々なインベーダを生成します。 ※ CGContextDrawImageをするので上下逆様でマスク画像を作成してください。(20100820 追記あり) コード window-basedアプリを作成してapplicationDelegateに以下のとおり記述してくださ…

CALayerにアニメーションを追加して、NSOperationからレイヤの位置を確認する方法

コード TestViewをwindowに追加して、コンパイルし、画面をクリックするだけ。TestViewヘッダファイル @interface TestView : UIView { NSOperationQueue *operationQueue_; } @property (nonatomic, retain) NSOperationQueue *operationQueue; @end TestVi…

NSMutableArrayに追加するオブジェクトの autorelease VS release のベンチを取ってみた。

コード #import <Cocoa/Cocoa.h> @interface TT : NSObject { id obj; CGPoint position; } @property (nonatomic, retain) id obj; @property (nonatomic) CGPoint position; @end @implementation TT @synthesize obj; @synthesize position; - (void)dealloc { self.obj </cocoa/cocoa.h>…

NSRunLoopのrunMode:beforeDate:がわからん。

以下のコード。 NSLog(@"start stage"); UIView *view; //view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; view = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 240)]; NSDate *date = [NSDate dateWithTimeIntervalSinceNow:5.…

スレッド使ってCALayerでアニメーションする場合

最終的にこんな画面に。この一つ一つのマスがばらばらと表示されてくる感じのものを作る。スレッド処理として以下のようなNSOperationのサブクラスを作る。CALayerを追加時にはopacityを0.0fにしておくので、アニメーションは0.8f秒かけて単純に透明度を1.0f…

マスク画像なしで角丸矩形を作る方法

CSS3で角丸が作れるんだからできるはずということで方法を探してみるとあった。しかもめちゃ簡単。 CoraAnimationを使ってUIViewからデフォルトのCALayerを取りだして角丸にしてしまう。 まずはフレームワークQuartzCoreを有効にしておく。(フレームワークの…

Googleスタイルガイドのプロパティ定義でアクセサを強制

Google Objective-Cスタイルガイド 日本語訳 ↑こちらにあるプロパティ定義のガイドに添って実装すると、アクセサを通さないで直接代入してしまうコーディングミスを防げそうです。 @interface Foo : NSObject { @private NSArray *hoge_; } @property (nonat…

SwitchCaseの怪

怪というほどのことでもないかw ネットワーク疎通確認の為に、下記のサイトを参考にしたのだけど、 まったく関係ないところでハマリそうになったのでメモ。iPhoneアプリケーションで圏外を通知する。 - 24/7 twenty-four seven Reachabilityがバージョンアッ…

アクセサ通さないとretainされない件

self.hogeと書かないとアクセッサ通さない→retainされない(これは知らなかった) 上記のようなブコメがあったので、 実際のコードで検証したいと思います。 #import <Cocoa/Cocoa.h> @interface Foo : NSObject { NSArray *hoge_; } @property (nonatomic,retain) NSArray *h</cocoa/cocoa.h>…

コマンドラインでコンパイル

意外と簡単にコンパイルができるようだ。 Xcodeから適当なプロジェクトを作成してmain.mだけとり出す。 main.mを適当に編集しちゃう。 #import <Cocoa/Cocoa.h> int main(){ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog(@"Hello World!"); [pool r</cocoa/cocoa.h>…

Objective-C 最速基礎文法マスター

Java基礎文法最速マスター - いろいろ解析日記を参考に、Objective-Cのものを書いてみた。まだまだ歴が浅いので間違っている所があるかもしれません。[2012-08-03追記] ARCやリテラル表記など新しい記法が導入され、このページに記載されていることは多少古…

KissXMLを使ってみる

-(NSArray *)friendsPictures{ NSURL *url = [NSURL URLWithString: @"http://movapic.com/feed/user/fn7"]; NSData *data = [NSData dataWithContentsOfURL: url]; NSError *error = nil; DDXMLDocument *doc = [[DDXMLDocument alloc] initWithData:data o…

UIImageでグラデーションしたい(その2)

グラデーションを使ってカラーピッカーみたいなものを作ってみた。色の値を取得するところは未実装。 [追記]色相を生成する方法が間違っていたのでソースコード含めて修正。あと、何も考えずに実装したのでAppDelegateにメソッド詰めこんでます。 それから、…

UIImageでグラデーションしたい(その1)

結論からいうと、まだできてませんがwww とりあえず画面いっぱいに設定したUIImageViewに色を設定してみるコード。 int width = 320; int height = 480; int bytesPerRow = 4 * width; unsigned char pixel[bytesPerRow * height]; int n; unsigned char *pt…

NSDateの件

文字列からNSDateを生成 NSDateFormatter *f = [[[NSDateFormatter alloc] init] autorelease]; [f setDateFormat:@"yyyy-MM-dd"]; return [f dateFromString:string]; NSDateから曜日を取得 NSCalendarからNSDateComponentsを取得する NSCalendar *calendar…

NSXMLParserで指定したタグの取得ってどうするの?

NSXMLParserって、SAXパーザだからXPathとかDomとか使えないもんだから、HTMLとかXMLを読み込ませたときにあのElementの値を取りだしたいのになぁと思う時があってさ。 で、どうすんのかなぁって。呼び出されるコールバック関数内で、XPATHっぽいのを作成し…

UIViewのバグ??

HMDTの人が発見して、ToyCameraのfladdictさんも発生すると言ってたバグ http://hmdt.jp/archives/2009_07.html#2009072401その後fladdictさんが UIViewのallocateの件は、90Mを超えてinstrumentsがクラッシュした後も アプリが一向に死ぬ気配がないので、in…

UITableViewでfizzbuzz

UITableViewの追加、dataSourceとdelegateをfizzbuzzAppDelegateに繋ぐのはInterfaceBuilder側で行う。ヘッダファイル。 #import <UIKit/UIKit.h> @interface fizzbuzzAppDelegate : NSObject <UIApplicationDelegate> { UIWindow *window; UITableViewController *tvc; } @property (nonatomic, re</uiapplicationdelegate></uikit/uikit.h>…

プロパティ

@interface MyObj : NSObject{ NSMutableDictionary *dic; } @property (nonatomin,retain) NSMutableDictionary *dic; @end @implementation -(id)initWithDic:(NSMutableDictionary *)param { if(self = [super init]){ dic = param; } return self; } -(v…

NSTimerその後2

NSTimerは使わない方針にしたのに、エラーが発生した。 アプリ内で、いくつかのUIViewControllerを生成し、現在表示中のviewをcurrentViewとして保持するようにしていた。 で、 if([currentView superview]){ [currentView removeFromSuperview]; } ってやっ…

NSTimerその後

やっぱり色々と不安定な感じが拭えないので、インスタンスに保持させるのは止めにした。 使い方目的としては、UIAccerelometerのタイムアウトだったわけだけども、コールバックの実行は秒間何回って指定できるからそのコールバック側で、intのインスタンス変…

非形式プロトコル

プロトコルがコンパイル時に適合しているか検査されるのに対して、非形式プロトコルの場合は実装されていなくてもコンパイル可能。実行時に各メソッドが実装されているかどうかを検出することしかできない。非形式プロトコルの実装方法としてはNSObjectへの…

プロトコル

プロトコルとは、ある種のメソッドが実装されているかどうかを判断する基準となるもの。プロトコルに適合しているとは、そのプロトコルで宣言されているメソッドをクラス内で実装しているということになる。Javaはインターフェースの多重継承をさせることで…

カテゴリ

カテゴリとは、多くのメソッドを持ったクラスなどを定義する場合に、メソッドを別ファイルとして定義可能な機能。使い方としては、同種のメソッド毎に別ファイルに分割することで、メンテナンス向上に繋がる。prototype.jsでいう、addMethodsで読み込ませる…