ID/プロファイル | 内容 |
Bundle ID | アプリケーション固有のID。アプリケーション1つに1個。(例:com.apple.iTunes) |
App ID | 開発者がアプリケーションに「Push Notification」「in App Purchase」「Game Center」等へのアクセスを許可・禁止設定する為の挙動を管理するID。 キーチェインでのアクセス識別子となり、それぞれのアプリケーションの挙動を制御する。 アプリケーションの「挙動」について1つ付けられるIDの為、複数アプリケーションをまとめて指定できるワイルドカード指定が認められている。(例:com.apple.*) ただし、GameCenter等のサービスを許可する時はワイルドカード指定は使えない。つまり各アプリケーションに1個のApp IDを付けなければならない。 |
プロビジョニングプロファイル | デバイスにインストールされて、実行時に正規のルートからインストールされたか確認するための情報を保持するファイル。(App ID/デバイスID/開発者IDを保持) |
2011年2月19日土曜日
プロビジョニングプロファイル
プロビジョニング等セキュリティ関連の情報をなんとなくまとめてみました。
2011年2月4日金曜日
メモリリークしない為に その1
NSMutableArrayやNSArrayをautorelease以外でメモリ確保した場合、配列を解放しても要素の解放処理が呼び出されるわけではありません。
ar1 = [[NSMutableArray alloc] initWithObjects:@"TEST1", @"TEST2", @"TEST3", nil];
ar2 = [[NSMutableArray alloc] initWithObjects:[SomeClass alloc]
, [SomeClass alloc]
, [SomeClass alloc], nil];
arrays = [[NSArray alloc] initWithObjects:ar1, ar2, nil];
・
・
・
[arrays release]; // ar1 / ar2 とSomeClassがメモリリーク
上記例では、「arrays」の解放しか行っていないので、「ar1」「ar2」「SomeClass」が全てメモリリークとなります。
「TEST1」「TEST2」「TEST3」の文字列はautoreleaseされるので解放の必要はありません。
要素を全て解放すればメモリリークしなくなります。
[ar1 release]; // ar1を解放
// ar2の要素を解放
for (int i = 0; i < ar2.count; i++) {
SomeClass* tmp = [ar2 objectAtIndex:i];
[tmp release];
}
[ar2 release]; // ar2を解放 [arrays release]; // arraysを解放
ar1 = [[NSMutableArray alloc] initWithObjects:@"TEST1", @"TEST2", @"TEST3", nil];
ar2 = [[NSMutableArray alloc] initWithObjects:[SomeClass alloc]
, [SomeClass alloc]
, [SomeClass alloc], nil];
arrays = [[NSArray alloc] initWithObjects:ar1, ar2, nil];
・
・
・
[arrays release]; // ar1 / ar2 とSomeClassがメモリリーク
上記例では、「arrays」の解放しか行っていないので、「ar1」「ar2」「SomeClass」が全てメモリリークとなります。
「TEST1」「TEST2」「TEST3」の文字列はautoreleaseされるので解放の必要はありません。
要素を全て解放すればメモリリークしなくなります。
[ar1 release]; // ar1を解放
// ar2の要素を解放
for (int i = 0; i < ar2.count; i++) {
SomeClass* tmp = [ar2 objectAtIndex:i];
[tmp release];
}
[ar2 release]; // ar2を解放 [arrays release]; // arraysを解放
登録:
投稿 (Atom)