gpt4 book ai didi

objective-c - 带有@synthesize 的自动 iVar

转载 作者:太空狗 更新时间:2023-10-30 03:40:32 25 4
gpt4 key购买 nike

我了解到,从 iOS 4 开始,现在可以完全不声明 iVar,并允许编译器在您合成属性时自动为您创建它们。但是,我无法从 Apple 找到有关此功能的任何文档。

此外,是否有任何关于最佳实践的文档或 Apple 推荐的关于使用 iVar 和属性的指南?我一直使用这样的属性:

.h文件

@interface myClass {
NSIndexPath *_indexPath
}

@property(nonatomic, retain) NSIndexPath *indexPath

@end

.m文件

@implementation myClass

@synthesize indexPath = _indexPath;

- (void)dealloc {
[_indexPath release];
}
@end

我使用 _indexPath 而不是 indexPath 作为我的 iVar 名称,以确保在我需要使用 self.indexPath 时我永远不会使用 indexPath。但现在 iOS 支持自动属性,我不需要担心这个。但是,如果我遗漏了 iVar 声明,我应该如何处理在我的 dealloc 中释放它?我被教导在 dealloc 中释放时直接使用 iVars,而不是使用属性方法。如果我在设计时没有 iVar,我可以只调用属性方法吗?

最佳答案

我用过很多不同的方法来处理这个问题。我现在的方法是使用dealloc中的property access。不这样做的理由(在我看来)太过人为而不是不这样做,除非我知道该属性(property)有奇怪的行为。

@interface Class
@property (nonatomic, retain) id prop;
@end

@implementation Class
@synthesize prop;

- (void)dealloc;
{
self.prop = nil;
//[prop release], prop=nil; works as well, even without doing an explicit iVar
[super dealloc];
}
@end

关于objective-c - 带有@synthesize 的自动 iVar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com