где последний объект пула ушел с дисплея и, если какая ошибка / исключение в моем коде ?? - PullRequest
0 голосов
/ 29 июля 2011

#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 memo-mgt-referencecounter-obj-c [2529: 10b]

ОТДЕЛ СОЗДАНИЯ БАССЕЙНОВ

2011-07-29 12: 27: 11.127 memo-mgt-referencecounter-obj-c [2529: 10b] RC = 1 из р =

2011-07-29 12: 27: 11.128 memo-mgt-referencecounter-obj-c [2529: 10b] RC = 1 из p1 =

2011-07-29 12: 27: 11.129 memo-mgt-referencecounter-obj-c [2529: 10b] RC = 1 из p2 =

2011-07-29 12: 27: 11.129 memo-mgt-referencecounter-obj-c [2529: 10b] RC = 1 из p3 =

2011-07-29 12: 27: 11.130 memo-mgt-referencecounter-obj-c [2529: 10b] RC = 1 из p4 =

2011-07-29 12: 27: 11.130 memo-mgt-referencecounter-obj-c [2529: 10b] ОТДЕЛ СОЗДАНИЯ ОБЪЕКТА

2011-07-29 12: 27: 11.131 memo-mgt-referencecounter-obj-c [2529: 10b] ИНИЦИИРОВАНИЕ КЛАССОВОЙ ССЫЛКИ .......... СОХРАНИТЬ СЧЕТ = 1 Object1 =

2011-07-29 12: 27: 11.132 memo-mgt-referencecounter-obj-c [2529: 10b] ИНИЦИИРОВАНИЕ КЛАССОВОЙ ССЫЛКИ .......... СОХРАНИТЬ СЧЕТ = 1 OBJECT2 =

2011-07-29 12: 27: 11.132 memo-mgt-referencecounter-obj-c [2529: 10b] ИНИЦИИРОВАНИЕ КЛАССОВОЙ ССЫЛКИ .......... СОХРАНИТЬ СЧЕТ = 1 OBJECT3 =

2011-07-29 12: 27: 11.133 memo-mgt-referencecounter-obj-c [2529: 10b] ИНИЦИИРОВАНИЕ КЛАССОВОЙ ССЫЛКИ .......... СОХРАНИТЬ СЧЕТ = 1 OBJECT4 =

2011-07-29 12: 27: 11.134 memo-mgt-referencecounter-obj-c [2529: 10b] ИНИЦИИРОВАНИЕ КЛАССОВОЙ ССЫЛКИ .......... СОХРАНИТЬ СЧЕТ = 1 OBJECT5 =

2011-07-29 12: 27: 11.145 memo-mgt-referencecounter-obj-c [2529: 10b] ОТДЕЛ ДЕЛЕЦИИ

2011-07-29 12: 27: 11.145 memo-mgt-referencecounter-obj-c [2529: 10b] РАЗЪЯСНИТЕ ССЫЛКУ КЛАССА .......... СОХРАНИТЕ СЧЕТ до 0 и объект остается 4

2011-07-29 12: 27: 11.146 memo-mgt-referencecounter-obj-c [2529: 10b] РАЗЪЯСНИТЕ ССЫЛКУ КЛАССА .......... СОХРАНИТЕ СЧЕТ до 0 и объект остается 3

2011-07-29 12: 27: 11.147 memo-mgt-referencecounter-obj-c [2529: 10b] РАЗЪЯСНИТЕ ССЫЛКУ КЛАССА .......... СОХРАНИТЕ СЧЕТ до 0 и объект остается 2

2011-07-29 12: 27: 11.148 memo-mgt-referencecounter-obj-c [2529: 10b] РАЗЪЯСНИТЕ ССЫЛКУ КЛАССА .......... СОХРАНИТЕ СЧЕТ до 0 и объект остается 1

2011-07-29 12: 27: 11.149 memo-mgt-referencecounter-obj-c [2529: 10b] РАЗЪЯСНИТЕ ССЫЛКУ КЛАССА .......... СОХРАНИТЕ СЧЕТ до 0 и объект остается 0

2011-07-29 12: 27: 11.149 memo-mgt-referencecounter-obj-c [2529: 10b] RC = 1 из р =

2011-07-29 12: 27: 11.150 memo-mgt-referencecounter-obj-c [2529: 10b] RC = 1 из p1 =

2011-07-29 12: 27: 11.151 memo-mgt-referencecounter-obj-c [2529: 10b] RC = 1 из p2 =

2011-07-29 12: 36: 29.419 memo-mgt-referencecounter-obj-c [2583: 10b] RC = 1 из p3 =

sharedlibrary apply-load-rules all Присоединение к процессу 2583.

В других случаях, таких как [p1 / p2 / p3 / p4 release]; последняя строка O / P -,

2011-07-29 12: 40: 38.124 memo-mgt-referencecounter-obj-c [2623: 10b] RC = 1 из р =

2011-07-29 12: 40: 38.124 memo-mgt-referencecounter-obj-c [2623: 10b] RC = 1 из p1 =

2011-07-29 12: 40: 38.124 memo-mgt-referencecounter-obj-c [2623: 10b] RC = 1 из p2 =

2011-07-29 12: 40: 38.125 memo-mgt-referencecounter-obj-c [2623: 10b] RC= 1 из p3 =

2011-07-29 12: 40: 38.125 memo-mgt-referencecounter-obj-c [2623: 10b] RC = 1 из p4 =

Отладчик имеетвыход со статусом 0.

Теперь мой вопрос: куда делся пул p4 в случае [p release];и какая архитектура стоит за этим

1 Ответ

1 голос
/ 29 июля 2011

retainCount бесполезен. Не называй это.

Что касается пулов автоматического выпуска, то они не являются стандартным объектом поведения. Не может быть подклассами, не ведите себя как что-либо еще. Не может быть самоанализ.

Руководство по концепции документации и управления памятью охватывает все это.

<Ч />

То, что вы не видите вывод журнала, не означает, что какая-то переменная или пул или что-то еще пропало. Это просто означает, что программа потерпела крах / вышла до того, как была записана строка журнала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...