首先有一个类@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];
}
呃,只是凭感觉写的,总觉得哪儿有什么不对.
求指导.
{
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];
}
呃,只是凭感觉写的,总觉得哪儿有什么不对.
求指导.
-(void)release
{
[str release];
[super release];
}这个不需要你重写,你在-(void) dealloc {
[str release]; str = nil;
[super dealloc];
}这里写即可。可以相当于C++中的构造和析构。
如果是在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变空指针?不知道我的想法有没有错
-dealloc{}中,也不会去释放掉它。感觉它会在内存释放池里释放掉。系统自带的帮我autorelease掉了如果使用临时变量 或者一定把成员变量 【nsstring alloc】,那么就要去release掉还有,[nsobject COPY]会开辟空间 或 retaincount +1,这个不太记得了
-dealloc{}中,也不会去释放掉它。感觉它会在内存释放池里释放掉。系统自带的帮我autorelease掉了如果使用临时变量 或者一定把成员变量 【nsstring alloc】,那么就要去release掉还有,[nsobject COPY]会开辟空间 或 retaincount +1,这个不太记得了