iphone-不泄漏
正确的方法是什么 我有一个数组,我将在几个方法上使用它。我将向其中添加对象、获取值、替换值等 今天我这样做: 我在.h上声明它,使用类似iphone-不泄漏,iphone,ipad,Iphone,Ipad,正确的方法是什么 我有一个数组,我将在几个方法上使用它。我将向其中添加对象、获取值、替换值等 今天我这样做: 我在.h上声明它,使用类似 NSMutableArray *myArray; myArray = [[[NSArray alloc] init] retain]; 一旦应用程序启动,我就在上声明它 NSMutableArray *myArray; myArray = [[[NSArray alloc] init] retain]; 如果我不添加retain,数组将在某个时候被释放
NSMutableArray *myArray;
myArray = [[[NSArray alloc] init] retain];
一旦应用程序启动,我就在上声明它
NSMutableArray *myArray;
myArray = [[[NSArray alloc] init] retain];
如果我不添加retain,数组将在某个时候被释放,应用程序将崩溃。但在应用程序开始时分配阵列并让它“打开”,而不释放它会让仪器哭泣,将手指指向我,称我为“泄密者”
如何解决这个问题?这是正确的方法吗?你们是怎么做这种事的
谢谢
alloc
隐式地将保留计数设置为1。通过发送retain
消息,您将retain计数增加到2。为了释放对象,您需要释放它两次。否则将导致内存泄漏
理想情况下,您应该使用[[NSArray alloc]init]
在init
方法中创建对象,然后在dealloc
方法中释放它,如下所示:
- (void)dealloc {
[myArray release];
[super dealloc];
}
您可能还发现本文很有用:
还有一件事:您将myArray声明为
NSMutableArray
,但将其实例化为NSArray
。可能是这导致了崩溃。alloc
隐式地将保留计数设置为1。通过发送retain
消息,您将retain计数增加到2。为了释放对象,您需要释放它两次。否则将导致内存泄漏
理想情况下,您应该使用[[NSArray alloc]init]
在init
方法中创建对象,然后在dealloc
方法中释放它,如下所示:
- (void)dealloc {
[myArray release];
[super dealloc];
}
您可能还发现本文很有用:
还有一件事:您将myArray声明为
NSMutableArray
,但将其实例化为NSArray
。可能是这导致了崩溃。您不应该保留刚刚创建的对象。你已经拥有它了。如果,如您所说,“数组将在某个时刻被释放,应用程序将崩溃”,那么您应该更改这段代码。您的代码不应该释放您仍然想要保留的对象。您不应该保留刚刚创建的对象。你已经拥有它了。如果,如您所说,“数组将在某个时刻被释放,应用程序将崩溃”,那么您应该更改这段代码。你的代码不应该释放你仍然想保留的对象。谢谢,但请告诉我:我在应用程序开始时声明数组并在dealloc方法上释放它,这是不是犯了异端?我怎么能不用?如果不这样做,数组将无效,应用程序将崩溃。我已尝试删除retain,但应用程序崩溃。您必须在代码的其他地方释放它。请确保您的代码中唯一的[myArray release]
实例是在您的dealloc
方法中。谢谢,但请告诉我:我在应用程序开始时声明数组并在dealloc方法中发布它,这是不是犯了异端?我怎么能不用?如果不这样做,数组将无效,应用程序将崩溃。我已尝试删除retain,但应用程序崩溃。您必须在代码的其他地方释放它。确保代码中的[myArray release]
的唯一实例在dealloc
方法中。