【发布时间】:2011-12-13 15:32:48
【问题描述】:
我在一个类中有一个变量,NSNumber。我想将此 var 的值传递给另一个类 var。问题是当我尝试设置第二类var的值时,我释放了第一类的对象并获得了错误消息。
在 C++ 中,这很容易做到。但是这里的内存管理和指针让我很困惑。
解决方案代码,用于测试:
#import <Foundation/Foundation.h>
@interface A : NSObject
{
NSNumber *a;
}
@property (nonatomic, retain) NSNumber *a;
@end
int main(int argc, char *argv[])
{
NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];
A *instance1 = [[A alloc] init];
A *instance2 = [[A alloc] init];
[instance1 setA:[NSNumber numberWithFloat:5.43f]];
instance2.a = [instance1.a copy];
[instance1 release];
NSLog(@"Valor de la que sigue viva, parte2: %@", instance2.a);
[instance2 release];
[p release];
[pool drain];
return 0;
}
【问题讨论】:
-
您能否发布一些代码,以便我们更好地理解您的意思?谢谢。
-
抱怨内存管理和指针让您感到困惑,然后以 C++ 为例,但事实并非如此,这让我感到害怕......对于一些实际代码也 +1。这是同一个类的两个实例还是两个类中的一个实例?
-
很抱歉没有发布一些代码,但我认为这比我的解释更令人困惑。现在我插入@Denis 建议我的解决方案。
标签: objective-c memory pointers