Objective c 如何释放我们类中另一个类的对象?

Objective c 如何释放我们类中另一个类的对象?,objective-c,Objective C,我在命令行应用程序中创建了两个类(FirstClass和SecondClass)。我在FirstClass方法中创建了一个SecondClass对象。现在我想在main中调用该方法并释放分配给该对象的内存。我的代码如下 @implementation FirstClass +(NSMutableArray *) addObject{ NSMutableArray *namesArray = [[[NSMutableArray alloc]init] autorelease];

我在命令行应用程序中创建了两个类(FirstClass和SecondClass)。我在FirstClass方法中创建了一个SecondClass对象。现在我想在main中调用该方法并释放分配给该对象的内存。我的代码如下

@implementation FirstClass

+(NSMutableArray *) addObject{
    NSMutableArray *namesArray = [[[NSMutableArray alloc]init] autorelease];
    SecondClass *second = [[SecondClass alloc]init];
    NSLog(@"Before adding object, count = %ld ",[second retainCount]); //RC = 1
    [second setName:@"Mobicule"];
    [namesArray addObject:second];
    NSLog(@"First object addeded, count = %ld ",[second retainCount]); //RC = 2
    [second release];
    NSLog(@"After release, count = %ld",[second retainCount]); //RC = 1
    return namesArray;
}

@end
int main (int argc, const char * argv[]) {

@autoreleasepool {

    // insert code here...
   // NSLog(@"Hello, World!");

    NSMutableArray *arrayMain = [[NSMutableArray alloc]init];

    arrayMain = [FirstClass addObject];

    for (int i = 0; i<[arrayMain count]; i++) {

        NSLog(@"%@",[[arrayMain objectAtIndex:i] name]);
    }

   NSLog(@"%ld",[arrayMain retainCount]);

}
return 0;
}
我想把保留计数设为零

主要功能如下

@implementation FirstClass

+(NSMutableArray *) addObject{
    NSMutableArray *namesArray = [[[NSMutableArray alloc]init] autorelease];
    SecondClass *second = [[SecondClass alloc]init];
    NSLog(@"Before adding object, count = %ld ",[second retainCount]); //RC = 1
    [second setName:@"Mobicule"];
    [namesArray addObject:second];
    NSLog(@"First object addeded, count = %ld ",[second retainCount]); //RC = 2
    [second release];
    NSLog(@"After release, count = %ld",[second retainCount]); //RC = 1
    return namesArray;
}

@end
int main (int argc, const char * argv[]) {

@autoreleasepool {

    // insert code here...
   // NSLog(@"Hello, World!");

    NSMutableArray *arrayMain = [[NSMutableArray alloc]init];

    arrayMain = [FirstClass addObject];

    for (int i = 0; i<[arrayMain count]; i++) {

        NSLog(@"%@",[[arrayMain objectAtIndex:i] name]);
    }

   NSLog(@"%ld",[arrayMain retainCount]);

}
return 0;
}
int main(int argc,const char*argv[]{
@自动释放池{
//在这里插入代码。。。
//NSLog(@“你好,世界!”);
NSMUTABLEARRY*arrayMain=[[NSMUTABLEARRY alloc]init];
arrayMain=[FirstClass addObject];

对于(int i=0;i我假设name的合成属性为
retain

  +(NSMutableArray *) addObject{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSMutableArray *namesArray = [[NSMutableArray alloc]init];
    SecondClass *second = [[[SecondClass alloc]init]autorelease];
    NSLog(@"Before adding object, count = %ld ",[second retainCount]); //RC = 1
    [second setName:@"Mobicule"]; //implementation will handle the release for you
    [namesArray addObject:second];
    NSLog(@"First object addeded, count = %ld ",[second retainCount]); //RC = 2
    [pool release];
    NSLog(@"After pool release, count = %ld",[second retainCount]); //RC=1
    return [namesArray autorelease];
}  
你不应该使用-retainCount,因为它从来不会告诉你任何事情 有用


看看

根据定义,retainCount不能返回0。这是它无用的众多原因之一。