技術をかじる猫

適当に気になった技術や言語、思ったこと考えた事など。

iPhone で画面イメージを取得する

前回と似たネタ。

#import <QuartzCore/QuartzCore.h>
- (UIImage*) buildImageFrom: (UIView*)view {
    UIGraphicsBeginImageContext(view .bounds.size);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage* viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return viewImage;
}

このとき、取得できる UIImage は autorelease 済みなので、 release すると死ねる。
今回は公式公開の API なので、胸を張って Apple に出せるな。
import はあってもなくてもよい*1

*1:無い場合は、renderInContext で warning が出る

iPhone でXMLのDOM解析を行う

デフォルトの NSXMLPerser がシーケンスアクセスしかできなくてとても扱いづらい。
かといって、根っこの libxml2 は高性能で早くて DOM 使えるのにドキュメントが腐ってて扱いにくい。
で、探して見っけたのがこれ

http://code.google.com/p/gdata-objectivec-client/

使い方は、以下の通り。

  1. Frameworks を右クリック、追加、既存のフレームワーク
  2. /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/usr/lib/libxml2.2.dylib をさくっと選択。
  3. ターゲットのバイナリをライブラリにリンクに、libxml2.dylib をドロップ。
  4. ターゲットを開いて、ビルドタブを開き、「リンク」「他のリンカフラグ」に「-lxml2」を追加。
  5. そのまま、「検索パス」「ヘッダ検索パス」に「/usr/include/libxml2」と「/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/usr/include/libxml2」を追加。
  6. http://code.google.com/p/gdata-objectivec-client/ このへんからライブラリ落としてきて解凍
  7. GDataTargetNamespace.h, GDataDefines.h, GDataXMLNode.h, GDataXMLNode.m をプロジェクトにコピー

これでとりあえず準備完了。

以下サンプル

続きを読む

初の Mac ソフト作ってみる

公式チュートリアルも含めて悶絶したので、ここに手順をメモしておく。

  1. XCode 起動
  2. Model を適当に作成する

内容はとりあえずこんな感じ。

#import <Cocoa/Cocoa.h>

@interface HelloModel : NSObject {
	int count,value;
}

@property(readwrite) int count,value;
-(int)execute:(int)mod;

@end

実装もこんな感じ

#import "HelloModel.h"

@implementation HelloModel

@synthesize count,value;

-(int)execute:(int)mod {
	return self.count * self.value % mod;
}

@end
続きを読む