【发布时间】:2014-09-21 06:57:36
【问题描述】:
晚上好, 我对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;
【问题讨论】:
-
feedItems将在超出范围时收到release消息。这可能意味着也可能不意味着它会立即被删除。 -
feedItems声明在哪里? -
添加了有关声明的信息!
-
嗯,所以它是一个实例变量?在这种情况下,会发生不同的事情。默认情况下,Ivar 为
strong- i。 e.释放将在重新分配时发生(以及在包含对象的销毁时)。 -
您可以删除此行:
AFeedlyClientStream *feedItems;。自动属性合成将自动为您的属性创建一个支持 ivar,名为_feedItems
标签: objective-c memory-leaks automatic-ref-counting