arc4random(3)改

2014. 05. 31
BSDライブラリ関数マニュアル ARC4RANDOM(3)


●名前

arc4randomarc4random_bufarc4random_uniformarc4random_stirarc4random_addrandom
arc4乱数ジェネレータ


ライブラリ

標準Cライブラリ(libc、-lc)


書式

#include <stdlib.h>

u_int32_t
arc4random(void);

void
arc4random_buf(void *buf, size_t nbytes);

u_int32_t
arc4random_uniform(u_int32_t upper_bound);

void
arc4random_stir(void);

void
arc4random_addrandom(unsigned char *dat, int datlen);


解説

arc4random()関数は、8x8の8ビットS-Boxを使用したarc4暗号で採用されているキーストリームジェネレータを利用します。
S-Boxは約21700の状態を取ることができます。
arc4random()関数は0 〜 232 - 1の範囲の擬似乱数を返すため、rand(3)random(3)の範囲の2倍あります。

arc4random_buf()関数は、ARC4に由来するランダムデータで長さnbytesの領域bufを埋めます。

arc4random_uniform()は、upper_boundより少ない均一に分散した乱数を返します。
arc4random_uniform()は、"arc4random() % upper_bound"のような構造の場合、上限が2のべき乗ではない時に生ずる"モジュロバイアス(剰余の偏在)"を回避するので推奨されます。

arc4random_stir()関数は/dev/urandomからデータを読み込み、arc4random_addrandom()経由でS-Boxの順序を変えて使用しています。

arc4random()ファミリーは自動的に自身を初期化するので、使用する前にarc4random_stir()を呼び出す必要はありません。


●例

以下にarc4random()を使用して従来のrand()やrandom()関数を挿入置換する方法を示します。

#define foo4random() (arc4random() % ((unsigned)RAND_MAX + 1))


●関連項目

rand(3)random(3)srandomdev(3)


●歴史

RC4はRSA Data Security社によって設計されました。
それはUSENETに匿名で投稿され、オリジナルの暗号文にアクセスできる複数の情報元によって同等であることが確認されました。
RC4は企業秘密であるため、この暗号化は現在ARC4と呼ばれています。


BSD 1997年4月15日



参考文献

Mac OS X Manual Page/arc4random_uniform(3)

0 CommentsPosted in 資料

rand(3)

2014. 05. 30
BSDライブラリ関数マニュアル RAND(3)


●名前

randrand_rsrandsranddev
悪い乱数ジェネレータ


●ライブラリ

標準Cライブラリ(libc、-lc)


●書式

#include <stdlib.h>

int
rand(void);

int
rand_r(unsigned *seed);

void
srand(unsigned seed);

void
sranddev(void);


解説

これらのインターフェイスはrandom(3)によって廃止されました。

rand()関数は、0〜(ヘッダファイル<stdlib.h>で定義されている)RAND_MAXの範囲で、擬似乱整数のシーケンスを算出します。

srand()関数は、rand()で返される擬似乱数の新しいシーケンスのためのシードとして、その引数のシードを設定します。
これらのシーケンスは、同じシード値でsrand()を呼び出すことによって繰り返すことが可能です。

シード値が提供されていない場合、関数は自動的に値1をシードとします。

sranddev()関数は、暗号化の利用に適した良好な乱数を返すrandom(4)乱数デバイスを使用して、シードを初期化します。

rand_r()関数は、rand()と同じ機能を提供します。
コンテキスト値のシードへのポインタは、呼び出し側が提供する必要があります。


●関連項目

random(3)、random(4)


●規格

rand()とsrand()関数は、ISO/IEC 9899:1990("ISO C90")に準拠しています。

rand_r()関数は、POSIX.4a Draft #6ドキュメントで提案されています。


BSD 1993年6月4日



参考文献

Mac OS X Manual Page/srand(3)

JMan/FreeBSDドキュメント/rand(3)

0 CommentsPosted in 資料

random(3)

2014. 05. 29
BSDライブラリ関数マニュアル RANDOM(3)


●名前

initstaterandomsetstatesrandomsrandomdev
より良い乱数ジェネレータ、およびジェネレータを変更するためのルーチン


●ライブラリ

標準Cライブラリ(libc、-lc)


●書式

#include <stdlib.h>

char *
initstate(unsigned seed, char *state, size_t size);

long
random(void);

char *
setstate(const char *state);

void
srandom(unsigned seed);

void
srandomdev(void);


解説

random()関数は非線形加法フィードバックを使用した乱数ジェネレータで、デフォルトでサイズが31のlong整数のテーブルを採用しています。
これは 0 〜 231 - 1 の範囲の連続した擬似乱数を返します。
この乱数ジェネレータの周期は非常に長く、約 16 x (231 - 1) です。

random()やsrandom()関数は、rand(3)srand(3)関数と(ほとんど)同じ呼び出しシーケンスと初期化プロパティを持っています。
違いはrand(3)の乱数列はかなり少なく、実際にはrandによって生成される下位ビットが周期的なパターンになっている点です。
random()によって生成されたものは全てのビットが使用可能です。
例えば「random()&01」ではランダムなバイナリ値が生成されます。

rand(3)と同様に、random()はシードを「1」としてsrandom()を呼び出すことによって再現することができる数列をデフォルトで生成します。

srandomdev()ルーチンは、暗号化の利用に適した良好な乱数を返すrandom(4)乱数デバイスを使用して、状態配列を初期化します。
この特定のシーディング手順では、状態バッファ内の後続する項は決められたシードに適用されているLCアルゴリズムからは取得できないので、任意の値でsrandom()を呼び出すことによって再現することが不可能な状態を生成することに注意してください。

initstate()ルーチンは、引数として渡された状態配列を後に使用するために初期化します。
initstate()で使用される状態配列の(バイト単位の)サイズは、乱数ジェネレータを使用する際に必要となる複雑さを決定するもので、状態が大きい程より良い乱数になります。
(現在、状態情報の量に"最適な"値は8、32、64、128、そして256バイトで、それ以外の量は最も近い既知の量に切り下げられます。8バイト未満の場合はエラーになります。)
(乱数シーケンスの開始点を指定し、同じ点から再開するための)初期化用のシードも引数です。
initstate()関数は、以前の状態情報配列へのポインタを返します。

状態が初期化されると、setstate()ルーチンは状態間の高速切替を提供します。
setstate()関数は以前の状態配列へのポインタを返し、その引数の状態配列は次にinitstate()またはsetstate()を呼び出すまで更なる乱数の生成に使用されます。

状態配列が初期化されると、(希望するシードや状態配列、サイズを伴う)initstate()を呼び出すか、または(状態配列を伴う)setstate()と(希望するシードを伴う)srandom()の両方を呼び出すことによって、異なる時点から再開することが出来ます。
setstate()とsrandom()の両方を呼び出すことの利点は、状態配列のサイズを初期化した後で記憶する必要が無いことです。

状態情報を256バイトにすると、乱数ジェネレータの周期は269より大きく、ほとんどの目的に充足します。


●作者

Earl T. Cohen


●診断

initstate()を8バイト未満の状態情報で呼び出した場合、またはsetstate()が誤った状態情報を検出した場合は、標準エラー出力にエラーメッセージを出力します。


●旧書式

#include <stdlib.h>

char *
initstate(unsigned long seed, char *state, long size);

char *
setstate(char *state);

void
srandom(unsigned long seed);

各パラメータの型は旧来のバージョンでは異なります。


●関連項目

arc4random(3)rand(3)srand(3)、random(4)、compat(5)


●歴史

これらの関数は4.2BSDで登場しました。


●バグ

処理速度はrand(3)の約2/3です。

旧来の実装は非常に脆弱なシーディングを使用していたため、ランダムシーケンスはシードであまり変化しませんでした。
現在の実装は初期状態の計算に、より良い擬似乱数ジェネレータを採用しています。

暗号化品質にランダム性を必要とするアプリケーションには、arc4random(3)を使用してください。


BSD 1993年6月4日



参考文献

Mac OS X Manual Page/random(3)

JMan/FreeBSDドキュメント/random(3)

0 CommentsPosted in 資料

arc4random(3)

2014. 05. 25
BSDライブラリ関数マニュアル ARC4RANDOM(3)


●名前

arc4randomarc4random_stirarc4random_addrandom
arc4乱数ジェネレータ


ライブラリ

標準Cライブラリ(libc、-lc)


書式

#include <stdlib.h>

u_int32_t
arc4random(void);

void
arc4random_stir(void);

void
arc4random_addrandom(unsigned char *dat, int datlen);


解説

arc4random()関数は、8x8の8ビットS-Boxを使用したarc4暗号で採用されているキーストリームジェネレータを利用します。
S-Boxは約21700の状態を取ることができます。
arc4random()関数は0 〜 232 - 1の範囲の擬似乱数を返すため、rand(3)random(3)の範囲の2倍あります。

arc4random_stir()関数は/dev/urandomからデータを読み込み、arc4random_addrandom()経由でS-Boxの順序を変えて使用しています。

arc4random()は自動的に自身を初期化するので、使用する前にarc4random_stir()を呼び出す必要はありません。


●例

以下にarc4random()を使用して従来のrand()やrandom()関数を挿入置換する方法を示します。

#define foo4random() (arc4random() % ((unsigned)RAND_MAX + 1))


●関連項目

rand(3)random(3)srandomdev(3)


●歴史

RC4はRSA Data Security社によって設計されました。
それはUSENETに匿名で投稿され、オリジナルの暗号文にアクセスできる複数の情報元によって同等であることが確認されました。
RC4は企業秘密であるため、この暗号化は現在ARC4と呼ばれています。


BSD 1997年4月15日



参考文献

Mac OS X Manual Page/arc4random(3)

Wikipedia/RC4

Wikipedia/Sボックス

0 CommentsPosted in 資料

NSLogでNSInteger変数を出力する際の注意

2014. 05. 19
詳細! Objective-C iPhoneアプリ開発 入門ノート Xcode5+iOS7対応」を読み始めて、NSInteger変数をNSLogで出力する際に(「Part 2 Objective-Cの基礎知識」の「Chapter 2-1 Objective-Cのプログラム」の「変数の宣言とデータ型(p.35)」など)、32bit環境では問題ないのですが64bit環境では警告が出るので調べてみました。



●警告内容

警告文は「Value of type 'NSInteger' should not be used as format arguments; add an explicit cast to 'long' instead(NSInteger型の値はフォーマット引数として使用しないでください。代わりにlongへの明示的なキャストを追加してください)」とあり、(long)でキャストすると共に書式指定子%dを%ldに変更するようにと指示されます。

8036.jpg



●原因

これはiOSの64ビット化に伴い、一部のデータ型のバイト長が32ビットと64ビットのランタイム環境間で異なるためです。

Cocoa Touch 64ビット移行ガイド」の「データ型に関する変更点」の「2つの規約:ILP32とLP64(p.8)」に、これまでの32bitランタイムでの規約(ILP32)と新たに追加された64bitランタイムでの規約(LP64)におけるバイト長と揃え境界(アライメント)が示されています。

表1-1 OS XおよびiOSにおける、各種整数型のバイト長と揃え境界

整数型バイト長
(ILP32)
揃え境界
(ILP32)
バイト長
(LP64)
揃え境界
(LP64)
char1バイト1バイト1バイト1バイト
BOOL、bool1バイト1バイト1バイト1バイト
short2バイト2バイト2バイト2バイト
int4バイト4バイト4バイト4バイト
long4バイト4バイト8バイト8バイト
long long8バイト4バイト8バイト8バイト
ポインタ4バイト4バイト8バイト8バイト
size_t4バイト4バイト8バイト8バイト
time_t4バイト4バイト8バイト8バイト
NSInteger4バイト4バイト8バイト8バイト
CFIndex4バイト4バイト8バイト8バイト
fpos_t8バイト4バイト8バイト8バイト
off_t8バイト4バイト8バイト8バイト

表1-2 OS XおよびiOSにおける、浮動小数点数型のバイト長と揃え境界

浮動小数点数型バイト長
(ILP32)
揃え境界
(ILP32)
バイト長
(LP64)
揃え境界
(LP64)
float4バイト4バイト4バイト4バイト
double8バイト8バイト8バイト8バイト
CGFloat4バイト4バイト8バイト8バイト

NSIntegerはNSObjCRuntime.hで次のように定義されています。

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif

32bitランタイムではint(4バイト)でしたが、64bitランタイムではlong(8バイト)に定義が変更されています。

このためNSInteger変数をlongにキャストし、「文字列操作プログラミングガイド」の「書式指定子(p.16)」にあるようにint指定子の%dからlong指定子の%ldにする必要があるのです。

表1 NSStringやCFStringの整形メソッド/関数で使える書式指定子

指定子説明
%@Objective-Cのオブジェクトの文字列表現。descriptionWithLocale:メソッドがあればその戻り値、なければdescriptionメソッドの戻り値になります。CFTypeRefオブジェクトに対しても適用可能で、この場合、CFCopyDescription関数の戻り値を使います。
%%'%'という文字自身。
%d、%D符号付き32ビット整数(int)。
%u、%U符号なし32ビット整数(unsigned int)。
%x符号なし32ビット整数(unsigned int)の16進表示。数字(0-9)と英小文字(a-f)で表記。
%X符号なし32ビット整数(unsigned int)の16進表示。数字(0-9)と英小文字(A-F)で表記。
%o、%O符号なし32ビット整数(unsigned int)の8進表示。
%f64ビット浮動小数点数(double)。
%e64ビット浮動小数点数(double)の指数表記。指数部の先頭は小文字の「e」。
%E64ビット浮動小数点数(double)の指数表記。指数部の先頭は大文字の「E」。
%g64ビット浮動小数点数(double)。指数部が-4未満または精度以上であれば%eと同じ、そうでなければ%fと同じ。
%G64ビット浮動小数点数(double)。指数部が-4未満または精度以上であれば%Eと同じ、そうでなければ%fと同じ。
%c8ビット符号なし文字(unsigned char)。NSLog()でASCII文字として出力。非ASCII文字は8進形式(\\ddd)またはUnicodeの16進形式(\\udddd、但しdは数字)。
%C16ビットUnicode文字(unichar)。NSLog()でASCII文字として出力。非ASCII文字は8進形式(\\ddd)またはUnicodeの16進形式(\\udddd、但しdは数字)。
%s8ビット符号なし文字の配列(末尾はNull)。%s指定子があると、システムデフォルトのエンコーディングとして文字を解釈するので、特に書字方向が右から左(RTL、Right-To-Left)の言語の場合、結果が変わる可能性があります。たとえば強い方向付けがない文字の場合、書字方向マーカが挿入されるのです。したがって、%sの使用を避け、エンコーディングを明示的に指定する方がよいでしょう。
%S16ビットUnicode文字の配列(末尾はNull)。
%pvoidポインタ(void *)。先頭に「0x」を置いた16進表示。数字(0-9)および英小文字(a-f)で表記。
%a64ビット浮動小数点数(double)の指数表記。先頭に「0x」、小数点の前に16進数字を1つ、指数部の先頭は小文字の「p」。
%A64ビット浮動小数点数(double)の指数表記。先頭に「0x」、小数点の前に16進数字を1つ、指数部の先頭は大文字の「P」。
%F64ビット浮動小数点数(double)の10進表記。

表2 NSStringやCFStringの整形メソッド/関数で使える長さ修飾子

長さ修飾子説明
h変換指定子d、o、u、x、Xの前に置いて、引数がshortまたはunsigned shortであることを指定。
hh変換指定子d、o、u、x、Xの前に置いて、引数がsigned charまたはunsigned charであることを指定。
l変換指定子d、o、u、x、Xの前に置いて、引数がlongまたはunsigned longであることを指定。
ll、q変換指定子d、o、u、x、Xの前に置いて、引数がlong longまたはunsigned long longであることを指定。
L変換指定子a、A、e、E、f、F、g、Gの前に置いて、引数がlong doubleであることを指定。
z変換指定子d、o、u、x、Xの前に置いて、引数がsize_tまたはこれに類する符号つき整数であることを指定。
t変換指定子d、o、u、x、Xの前に置いて、引数がptrdiff_tまたはこれに類する符号なし整数であることを指定。
j変換指定子d、o、u、x、Xの前に置いて、引数がintmax_tまたはuintmax_tであることを指定。



●対処法

例として以下のコードを使用します。

NSInteger a=10, b=20, ans;
ans = a + b;
NSLog(@"ans = %d", ans);


1)NSInteger値をlongにキャストする

NSInteger a=10, b=20, ans;
ans = a + b;
NSLog(@"ans = %ld", (long)ans);

コンパイラが指示するもので、「文字列操作プログラミングガイド」の「プラットフォームによる違い(p.18)」にあるようにようにAppleが推奨する対処法です。

表3 データ型に応じた書式指定子

書式指定子考慮点
NSInteger%ldまたは%lx値をlongにキャスト。
NSUInteger%luまたは%lx値をunsigned longにキャスト。
CGFloat%fまたは%g整形の場合、%fはfloat、doubleの両方に有効。ただし、書式指定に従って文字列を解析するときは、下記(「文字列操作プログラミングガイド」のp.19)の注意点を参照。
CFIndex%ldまたは%lxNSIntegerと同様。
ポインタ%pまたは%zx%pならば先頭に「0x」と印字。これが不要であれば%zxを指定し、型のキャストはしない。

この対処法は確かに32/64bit両ランタイム環境で通じるのですが、同様にfloatからdoubleへとバイト長の変わったCGFloatなども含め、適切な書式指定子とキャストを施さなければならないのが少々面倒です。


2)長さ修飾子zを利用する

NSInteger a=10, b=20, ans;
ans = a + b;
NSLog(@"ans = %zd", ans);

size_tがNSIntegerと同じく32bit環境では4バイト、64bit環境では8バイトであることから、長さ修飾子zを利用するというものです。
(「Qiita/Objective-C/32bitと64bit、共通で使えるNSLogとかのフォーマット指定子」や「暇人のブログ/NSIntegerを32bit/64bit両環境で表示させるには」を参照)

この対処法は動作しては問題ないものの本来意味する長さ修飾子ではないので、急場凌ぎとして一時的な措置なら構わないと思いますが、複数人がコードを編集するような場合は混乱を招くので避けた方が良いでしょう。


3)NSNumberリテラルを利用する

NSInteger a=10, b=20, ans;
ans = a + b;
NSLog(@"ans = %@", @(ans));

Xcode 4.4から導入されたNSNumberリテラルを使用して、NSInteger値をNSNumberオブジェクトとする方法です。
(「[yashigani days]/最近はやってるNSLogの書き方」や「Natsu's note/[Xcode][Modern Objectice-C] NSNumberリテラルとBoxed Expression Literals」を参照)

この対処法であればランタイム環境による変数のバイト長の変化を気にする必要が無く、画一的かつ簡素に表現できる良い方法だと思います。



参考文献

Cocoa Touch 64ビット移行ガイド

文字列操作プログラミングガイド

Qiita/Objective-C/32bitと64bit、共通で使えるNSLogとかのフォーマット指定子

暇人のブログ/NSIntegerを32bit/64bit両環境で表示させるには

[yashigani days]/最近はやってるNSLogの書き方

Natsu's note/[Xcode][Modern Objectice-C] NSNumberリテラルとBoxed Expression Literals

詳細! Objective-C iPhoneアプリ開発 入門ノート Xcode5+iOS7対応詳細! Objective-C iPhoneアプリ開発 入門ノート Xcode5+iOS7対応
(2013/11/02)
大重 美幸

商品詳細を見る

NSNotificationCenterクラス

2014. 05. 10
・継承
NSObject

・準拠
NSObject (NSObject)

・フレームワーク
/System/Library/Frameworks/Foundation.framework

・利用可能
iOS 2.0以降で利用可能

・手引書
Notification Programming Topics

・宣言
NSNotification.h



●概要

NSNotificationCenterオブジェクト(または単に通知センター)は、プログラム内の情報をブロードキャストするメカニズムを提供します。
NSNotificationCenterオブジェクトは基本的に通知ディスパッチテーブルです。

オブジェクトは通知(NSNotificationオブジェクト)を受信するために、addObserver:selector:name:object:またはaddObserverForName:object:queue:usingBlock:メソッドを使用して通知センターに登録します。
このメソッドの各呼び出しには通知のセットを指定します。
したがってオブジェクトはこれらのメソッドを複数回呼び出すことによって、様々な通知セットのオブザーバとして登録することができます。

実行中の各Cocoaプログラムはデフォルトの通知センターを持っています。
通常は独自に作成しないでください。
NSNotificationCenterオブジェクトは単一のプログラム内でのみ、通知を配信することができます。
別のプロセスに通知を投稿したい、あるいは別のプロセスから通知を受信したい場合は、NSDistributedNotificationCenterのインスタンスを使用してください。



●タスク

●通知センターの取得

+ defaultCenter

●通知オブザーバの管理

– addObserverForName:object:queue:usingBlock:
– addObserver:selector:name:object:
– removeObserver:
– removeObserver:name:object:

●通知の投稿

– postNotification:
– postNotificationName:object:
– postNotificationName:object:userInfo:



●クラスメソッド

defaultCenter

プロセスのデフォルトの通知センターを返します。

+ (id)defaultCenter

戻り値
システム通知に使用されている、現在のプロセスのデフォルトの通知センター。

利用可能
iOS 2.0以降で利用可能。

宣言
NSNotification.h



●インスタンスメソッド

addObserver:selector:name:object:

オブザーバ、通知セレクタ、そしてオプションの条件と共に、レシーバのディスパッチテーブルへエントリを追加します。

- (void)addObserver:(id)notificationObserver selector:(SEL)notificationSelector name:(NSString *)notificationName object:(id)notificationSender

パラメータ

notificationObserver

オブザーバとして登録するオブジェクトです。
この値はnilではいけません。

notificationSelector
通知の投稿を通知するために、レシーバがnotificationObserverに送信するメッセージを指定するセレクタです。
notificationSelectorで指定されたメソッドは、(NSNotificationのインスタンスの)引数を一つだけ持っている必要があります。

notificationName
オブザーバを登録するための通知の名前です。
つまり、この名前の通知のみオブザーバに配信されます。
nilを渡した場合、通知センターはオブザーバへ配信するかどうかを決定するために通知名を使用しません。

notificationSender
オブザーバが受信したい通知のオブジェクトです。
つまり、このセンダーによって送信された通知のみがオブザーバに配信されます。
nilを渡した場合、通知センターはオブザーバへ配信するかどうかを決定するために通知のセンダーを使用しません。

解説
addObserver:selector:name:object:で指定されたnotificationObserverまたはその他のオブジェクトを解放する前に、removeObserver:またはremoveObserver:name:object:を必ず呼び出してください。

利用可能
iOS 2.0以降で利用可能。

宣言
NSNotification.h


removeObserver:

レシーバのディスパッチテーブルから指定されたオブザーバの全てのエントリ削除します。

- (void)removeObserver:(id)notificationObserver

パラメータ

notificationObserver

削除するオブザーバです。
nilを指定してはいけません。

解説
addObserver:selector:name:object:で指定されたnotificationObserverまたはその他のオブジェクトを解放する前に、このメソッド(またはremoveObserver:name:object:)を必ず呼び出してください。

以下の例では、以前に登録していた全ての通知用のsomeObserverの登録を解除する方法を示します。

[[NSNotificationCenter defaultCenter] removeObserver:someObserver];

利用可能
iOS 2.0以降で利用可能。

宣言
NSNotification.h



参考文献

NSNotificationCenter Class Reference






Bose QuietComfort 20
Calendar
04 | 2014/05 | 06
Sun Mon Tue Wed Thu Fri Sat
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

Bose QuietComfort 20
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR