2011-07-29 5 views
0

#import <Foundation/Foundation.h> 
#import "REFERENCE.h" 
int main (int argc, const char * argv[]) 
{ 
    //POOL CREATION DEPARTMENT 
    NSLog(@"\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tPOOL CREATION DEPARTMENT"); 
    NSAutoreleasePool *p=[[NSAutoreleasePool alloc] init], 
    *p1=[[NSAutoreleasePool alloc] init],*p2=[[NSAutoreleasePool alloc] init], 
    *p3=[[NSAutoreleasePool alloc] init],*p4=[[NSAutoreleasePool alloc] init]; 
    NSLog(@"\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tRC=%d of p=%@\n\n",[p retainCount],p); 
    NSLog(@"RC=%d of p1=%@\n\n",[p1 retainCount],p1); 
    NSLog(@"RC=%d of p2=%@\n\n",[p2 retainCount],p2); 
    NSLog(@"RC=%d of p3=%@\n\n",[p3 retainCount],p3); 
    NSLog(@"RC=%d of p4=%@\n\n",[p4 retainCount],p4); 

    //OBJECT CREATION DEPARTMENT 
    NSLog(@"\n\n\n\n\n\n\n\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tOBJECT CREATION DEPARTMENT\n\n"); 
    REFERENCE *rc=[[REFERENCE alloc] init], 
    *rc1=[[REFERENCE alloc] init],*rc2=[[REFERENCE alloc] init], 
    *rc3=[[REFERENCE alloc] init],*rc4=[[REFERENCE alloc] init]; 

     [rc autorelease];[rc1 autorelease];[rc2 autorelease]; 
     [rc3 autorelease];[rc4 autorelease]; 

    //DELETING DEPARTMENT 
    NSLog(@"\n\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tDELETION DEPARTMENT"); 
    [p1 release]; 
    NSLog(@"\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tRC=%d of p=%@\n\n",[p retainCount],p); 
    NSLog(@"RC=%d of p1=%@\n\n",[p1 retainCount],p1); 
    NSLog(@"RC=%d of p2=%@\n\n",[p2 retainCount],p2); 
    NSLog(@"RC=%d of p3=%@\n\n",[p3 retainCount],p3); 
    NSLog(@"RC=%d of p4=%@\n\n",[p4 retainCount],p4); 

    return 0; 
} 

O/Pは、である -ここで、最後に表示されたプールオブジェクトはどこですか?または、コード内のエラー/例外は何ですか?

[セッション2011-07-29午前12時27分11秒0530で開始。] 2011-07-29 12: 27:11.125メモ-MGT-referencecounter-OBJ-Cの[2529:10B]

プール作成DEPARTMENT

2011-07-29 12:27:11.127メモ-MGT-referencecounter-OBJ-C [2529 :10B] RC = P 1 =

2011-07-29 12:27:11.128メモ-MGT-referencecounter-OBJ-C [2529:10B] RC = P1の1 =

2011 -07-29 12:27:11.129 memo-mgt-reference-counter-obj-c [2529:10b] RC = 1 of p2 =

2011-07-29 12:27:11.129 memo-mgt-referencecounter- OBJ-C [2529:10B] P3の= 1 RC =

2011-07-29 12:27:11.130メモ-MGT-referencecounter-OBJ-C [2529:10B] P4 =の RC = 1

2011-07-29 12:27:11.130メモ-MGT-referencecounter-OBJ-C [2529:10B] オブジェクト作成DEPARTMENT

2011-07-29 12:27:11.131メモ-mgt- referencecounter-OBJ-C [2529:10B] クラス参照を開始..........保持カウント= 1 OBJECT1 =

2011-07-29 12:27:11.132メモ-mgt- referencecounter-OBJ-C [2529:10B] クラス参照を開始..........保持カウント= 1 OBJECT2 =

2011-07-29 12:27:11.13 2メモ-MGT-referencecounter-OBJ-C [2529:10B] クラス参照を開始..........保持カウント= 1 オブジェクト3 =

2011-07-29 12:27: 11.133メモ-MGT-referencecounter-OBJ-C [2529:10B] クラス参照を開始..........保持カウント= 1 OBJECT4 =

2011-07-29 12:27: 11.134メモ-MGT-referencecounter-OBJ-C [2529:10B] クラス参照を開始..........保持カウント= 1 OBJECT5 =

2011-07-29 12:27: 11.145 memo-mgt-reference-counter-obj-c [2529:10b] DELETION DEPARTMENT

2011-07-29 12:27:11.145メモ-MGT-referencecounter-OBJ-C [2529:10B] がクラス参照を解放.......... のCOUNTをRETAIN 0とオブジェクトが残ります4

2011-07-29 12:27:11.146 memo-mgt-referencecounter-obj-c [2529:10b] クラス参照を解除する..........0に のCOUNTを保持し、オブジェクト3

2011-07-29 12まま:27:11.147メモ-MGT-referencecounter-OBJ-C [2529:10B] がクラス参照を解放....... 27:11.148メモ-MGT-referencecounter-OBJ-C [2529:10B] ... 0の数とオブジェクト2

2011-07-29 12ままRETAIN がクラス参照を解放し.... ...... の値を0に戻し、オブジェクトは1に残ります。

2011-07-29 12:27:11.149 memo-mgt-referencecounter-o BJ-C [2529:10B]:27: は、クラス参照を解放.......... 0に のCOUNTを保持し、オブジェクトは、0

2011-07-29 12まま11.149メモ、MGT -referencecounter-OBJ-C [2529:10B] RCのp = 1 =

2011-07-29 12:27:11.150メモ-MGT-referencecounter-OBJ-Cの[2529:10B] RC = 1 P1の=

2011-07-29 12:27:11.151メモ-MGT-referencecounter-OBJ-Cの[2529:10B] P2の= 1 RC =

2011-07-29 12:36:29.419メモ-MGT-referencecounter-OBJ-C [2583:10B] RCは= P3 =

sharedlibrary適用負荷-ルール1は、すべて2583.

をプロセスにアタッチ

[p1/p2/p3/p4放出]のような他の場合; O/Pである 最後の行、 -

2011-07-29 12:40:38.124メモ-MGT-referencecounter-OBJ-C [2623:10B] RCのp = 1 =

2011-07-29 12:40:38.124メモ-MGT-referencecounter-OBJ-C [2623:10B] RC = P1の1 =

2011-07-29 12:40:38.124メモ-mgt-参照カウンタ-obj-c [2623:10b] RC = 1 of p2 =

2011-07-29 12:40:38.125 memo-mgt-reference-counter-obj-c [2623:10b] RC = P3の1 =

2011-07-29 12:40:38.125メモ-MGT-referencecounter-OBJ-C [2623:10B] RCは= =

ザデバッガP4の1出ました

ここで私の質問は、[pリリース]の場合にp4プールがなくなったところです。 とその背後にあるアーキテクチャは何ですか

答えて

1

retainCountは役に立たないです。それを呼び出さないでください。

自動解放プールに関しては、標準的な動作オブジェクトではありません。サブクラスにすることはできません。他のように振る舞いません。イントロを見ることはできません。

ドキュメンテーションとメモリ管理のコンセプトガイドは、このすべてを幅広くカバーしています。


ログ出力が表示されないということは、変数やプールなどがなくなったことを示すものではありません。プログラムがクラッシュ/終了したことを意味します。の前に、のログ行が書き込まれました。

+0

私はautoreleasepoolのp4プールについて尋ねました。 – XCMAC

+0

なぜ[pリリース]の場合、p4を表示せず、他のケースでも表示されます。 – XCMAC

関連する問題