- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从这个主题中复制了这个例子。 It's better to release the ivar directly.
It's better to release the ivar directly. If a subclass overrides the setter methods of a property, your object might leak because your setter is not called.
@interface ClassA
@property (readwrite, retain) id anObject;
@end
@interface ClassB : ClassA
@end
@implementation ClassA
@synthesize anObject;
- (void)dealloc {
self.anObject = nil;
[super dealloc];
}
@end
@implementation ClassB
- (void)setAnObject: (id)anObject {
// do nothing!
}
@end
我看不出 [anObject release] 和 self.anObject = nil 有什么区别。因为
self.anObject = nil
等于
[anObject release];
anObject=nil;
为什么 [anObject release] 没有内存泄漏?
最佳答案
Because
self.anObject = nil
is equal to
[anObject release];
anObject=nil;
这是不正确的,是您混淆的根源。
self.anObject = nil
NOT 转换为直接 ivar 访问。它变成了
[self setAnObject:nil];
并且由于您重写了 -setAnObject:
方法不执行任何操作,因此永远不会释放底层实例变量,因此您正在泄漏内存。
顺便说一句,这就是为什么您应该避免在 init
和 dealloc
方法中使用 setter 方法的原因。子类可以覆盖它们来做非常规的事情。
关于ios - 为什么我在 [anObject release] 时没有内存泄漏,而我在 self.anObject = nil 时遇到问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8287008/
这个问题已经有答案了: what is the difference between null != object and object!=null [duplicate] (2 个回答) Check
我从这个主题中复制了这个例子。 It's better to release the ivar directly. It's better to release the ivar directly.
NUnit.Framework.Assert 命名空间中有这两个方法。 我只是找不到它们之间的区别。我也很好奇什么时候使用哪个。 最佳答案 Two forms are provided for the
This question already has answers here: Closed 8 years ago. Possible Duplicate: what is this weird c
几天来我一直试图解决这个问题,但无济于事。我正在尝试测试 AnObject.AnAction 的功能(先发制人的道歉,我必须混淆类/方法名称。)我的目标是防止 MyTestObj.do_work(An
我如何访问此 fetchedResultsController 委托(delegate)方法中的对象实际值? 我想根据对象的值设置要删除/更改的行的索引路径部分,因为表有多个数据源 - (void)c
这个问题在这里已经有了答案: Why does javascript's "in" operator return true when testing if 0 exists in an array
如何将responsetoselector转换为swift3。如果我转换为响应(to:)获取静态方法调用错误 - (NSString *)stringForObjectValue:(id)anObje
我正在探索我在 equals 方法中遇到的 Java 中的 String API 首先, if (anObject instanceof String) { String anotherStr
我在 UICollectionView 中使用 NSFetchedResultsController。 问题:当用户打开 View 时,我向 API 发送请求并在后台使用 performBackgro
请看下面的代码片段, String[] choices = {"Apple", "Banana", "Custard"}; JComboBox fruits = new JCombo
我是一名优秀的程序员,十分优秀!