首先有一个类@interface ClsDemo1 : NSObject
{
NSString* str;
}
......
@end在Object-C中貌似没有找到类似于C++ (构造函数/析构函数)的东西
那么....NSString* str 应该在哪儿申请内存,在哪儿释放呢???
抱歉,才从C++的转过来,还没适应.
尝试过
-(ClsDemo1*)init
{
if(self=[super init])
{
str=[[NSString alloc] init];
}
return self;
} -(void)release
{
[str release];
[super release];
}
呃,只是凭感觉写的,总觉得哪儿有什么不对.
求指导.

解决方案 »

  1.   


    -(void)release
    {
    [str release];
    [super release];
    }这个不需要你重写,你在-(void) dealloc {
           [str release]; str = nil;
           [super dealloc];
    }这里写即可。可以相当于C++中的构造和析构。
      

  2.   

    这样的话, 
    如果是在init中分配自己的内存的话
    ClsDemo1* A=[[ClsDemo1 alloc]init];  //A:retainCount=1;
    ClsDemo1* B=[A copy];//这一步后A.str  和 B.str  貌似指向了同一片内存空间?
    [A release]//A:retainCount=0,执行dealloc,str也被释放了,B.str变空指针?不知道我的想法有没有错
      

  3.   

    不会的, copy会重新分配一块内存
      

  4.   

    不太记得了我在XOCODE编译的时候,如果类中有成员变量是 string,一般都不为它开辟空间。
    -dealloc{}中,也不会去释放掉它。感觉它会在内存释放池里释放掉。系统自带的帮我autorelease掉了如果使用临时变量 或者一定把成员变量  【nsstring alloc】,那么就要去release掉还有,[nsobject COPY]会开辟空间 或 retaincount +1,这个不太记得了
      

  5.   

    不太记得了我在XOCODE编译的时候,如果类中有成员变量是 string,一般都不为它开辟空间。
    -dealloc{}中,也不会去释放掉它。感觉它会在内存释放池里释放掉。系统自带的帮我autorelease掉了如果使用临时变量 或者一定把成员变量  【nsstring alloc】,那么就要去release掉还有,[nsobject COPY]会开辟空间 或 retaincount +1,这个不太记得了