首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IOS 6中的ARC内存管理

IOS 6中的ARC内存管理
EN

Stack Overflow用户
提问于 2012-10-07 06:42:25
回答 1查看 1.6K关注 0票数 0

我正在浏览IOS (第三版)的Big Nerd Ranch。我在读ARC内存管理章节。它试图解释保留周期,并让我们修改一个简短的控制台应用程序,如下所示:

BNRItem的标头:

代码语言:javascript
复制
@interface BNRItem : NSObject
{
    NSString *itemName;
    NSString *serialNumber;
    int valueInDollars;
    NSDate *dateCreated;

    BNRItem *containedItem;
    BNRItem *container;
}
+ (id)randomItem;

- (void)setItemName:(NSString *)str;
- (NSString *)itemName;

- (void)setSerialNumber:(NSString *)str;
- (NSString *)serialNumber;

- (void)setValueInDollars:(int) i;
- (int)valueInDollars;

- (void)setContainedItem:(BNRItem *)i;
- (BNRItem *)containedItem;

-(void)setContainer:(BNRItem *)i;
- (BNRItem *)container;

- (NSDate *)dateCreated;

- (id)initWithItemName:(NSString*)name valueInDollars:(int)value serialNumber:(NSString *)sNumber;
- (id)initWithItemName:(NSString *)name andSerialNumber:(NSString *)sNumber;
@end

主文件:

代码语言:javascript
复制
int main(int argc, const char * argv[])
  {

  @autoreleasepool {
    NSMutableArray *items = [[NSMutableArray alloc]init];
    BNRItem *backpack = [[BNRItem alloc] init];
    [backpack setItemName:@"Backpack"];
    [items addObject:backpack];
    BNRItem *calculator = [[BNRItem alloc]init];
    [calculator setItemName:@"Calculator"];
    [items addObject:calculator];

    [backpack setContainer:calculator];
    NSLog(@"Setting items to nil");
    items = nil;

  }
  return 0;
}

现在它说:“根据我们到目前为止对内存管理的理解,当BNRItems设置为nil时,两个items都应该连同它们的实例变量一起销毁”。在此之前,当我们的BNRItem被销毁时,它让我们重写(无效) dealloc打印出来。

所以我运行它,我应该看到,因为backpack现在有一个很强的引用计算器,也不会被销毁。现在在控制台中,我看到两者都被销毁了,但我认为这是因为它们在应用程序结束时都被销毁了。当我在将项目设置为零之后进行断点时,没有任何东西会被破坏。书上说这是应该发生的..。但这会让我将容器设置为

代码语言:javascript
复制
__weak BNRItem *container 

然后,当我运行它时,仍然没有任何东西被破坏。我假设是因为仍然有指向它的指针,所以我没有设置为零?即使这本书在这一点上没有提到要这样做。所以我理解书中的解释(我想),但在实践中这是不会发生的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-07 06:58:12

我相信自动补全功能。

代码语言:javascript
复制
[backpack setContainer:calculator]

应该是

代码语言:javascript
复制
[backpack setContainedItem:calculator]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12764529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档