技术开发 频道

Objective-C内存管理入门系列篇

  问题一:

  value = [array objectAtIndex:n]; //得到一个数组中的对象

  [arry removeObjectAtIndex:n]; //卸载那个对象

  因为value得到了那个对象,但是由于另外一个拥有者release了该对象,所以其实value现在成了摇摆指针(无效数据)

  问题二:

  myArray = [NSArray array];

  ...

  [myArray release];

  NSArray返回的是一个自动释放对象,不仅myArray不应该在一段时间后release,而应该在适当的时候先retain,以防止该array被系统误释放。

  问题三:

  rocket = [rocketLauncher aRocket];

  [rocketLauncher release];

  和array这种数据收集类对象一样,如果我们得到了一个类的子对象而不retain它,那么在原父类被释放的时候,这个rocket其实也会失去其意义。

0
相关文章