【问题标题】:Best Practice Class Level Variables最佳实践类级别变量
【发布时间】:2014-10-22 15:41:51
【问题描述】:

我想在objective-c 中声明变量,这些变量在类的实例化实例中可用,但在该类范围之外不可用。我一直在做我的代码如下:

@interface myClass
{
 NSString* classVariable;
}
@end

@implementation myClass

-(void)method
{
 NSLog(@"%@",classVariable);
}

@end

这似乎在代码中有效,但我是 Objective-c 的新手(来自 Java 和 C#)。这是最佳做法吗?有什么陷阱吗?

提前致谢!

【问题讨论】:

  • 只使用属性就可以了!
  • @CrimsonChris 谢谢。我目前使用的方法有什么陷阱吗?我知道属性在类之外是可见的,我想避免这种情况。
  • 如果你把它们放在头文件中,它们只在类外可见。将它们放在您的类实现正上方的类类别中。
  • @CrimsonChris 啊,我明白了。所以这是最佳实践。出于好奇,我现在做的事情有什么陷阱吗?
  • 属性自动提供您可以覆盖的 getter 和 setter 方法。它们还允许您将它们声明为 ARC 的弱或强。使用它们的最重要原因是您可以与社区的其他人保持一致。

标签: objective-c scope class-variables


【解决方案1】:

很多人会告诉你使用 properties,但有时你只需要一个私有的实例 variable(这意味着在没有真正的访问控制)。如果这是您的情况,Objective-C 语言不久前获得了在实现中声明实例变量的能力,以满足您的需要。将您的代码更改为:

@interface myClass
@end

@implementation myClass
{
   NSString* classVariable;
}

-(void)method
{
   NSLog(@"%@",classVariable);
}

@end

以这种方式声明的实例变量在 Objective-C 允许的范围内是隐藏的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多