有关在objective-c中使用ARC的内存泄漏的信息

时间:2014-07-29 19:11:44

标签: objective-c memory-leaks automatic-ref-counting

晚上好, 我对ARC有一点怀疑。 如果我有以下代码:

- (void)parseStream:(NSDictionary *)response
{

    feedItems = [AFeedlyClientStream new];

    [feedItems setID:response[kFeedlyIDKey]];
    [feedItems setTitle:response[kFeedlyTitleKey]];
    [feedItems setDirection:response[kFeedlyDirectionKey]];
    [feedItems setContinuation:response[kFeedlyContinuationKey]];
    [feedItems setUpdated:[response[kFeedlyUpdatedKey] longLongValue]];

    NSArray *items = response[kFeedlyItemsKey];
    [feedItems setItems:[self parseEntries:items]];


    [[NSNotificationCenter defaultCenter]
     postNotificationName:@"DidLoadFeedItems"
     object:self];
}

其中feedItems是类AFeedlyClientStream的对象。 我的问题是: 如果我把很多时间用来调用那个方法...... feedItems = [AFeedlyClientStream new];会释放内存吗? 或者我必须做点什么?这是一个沉重的对象。

/ *更新* / feedItems声明

AFeedlyClientStream *feedItems;
@property (nonatomic, strong) AFeedlyClientStream *feedItems;

1 个答案:

答案 0 :(得分:1)

ARC(自动引用计数)将自动管理内存,因此您不必担心内存管理。您只需要了解一些基本内容,例如弱引用和强引用之间的区别,您必须确保不要创建强大的引用周期。但除此之外,您不需要向对象发送保留或释放消息。例如,当强引用超出范围时,ARC将自动插入这些 所以回答你的问题: 您发布的代码段完全没问题,ARC会自动做正确的事情来管理引用计数,从而为您管理内存。如注释中所述,如果将指向另一个对象的指针指定给feedItems,则对象feedItems引用将自动收到释放消息。这意味着如果feedItems是唯一一个持有强引用的变量,该对象也将被释放。

相关问题