首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在@implementation中添加ivar

在@implementation中添加ivar
EN

Stack Overflow用户
提问于 2012-01-14 00:12:05
回答 2查看 1.7K关注 0票数 11

为了实现良好的封装,像样的Objective-C程序员将他们的private ivars放在主实现文件中声明的私有extension中,如下所示:

代码语言:javascript
运行
复制
// MyClass.m

@interface MyClass () {
    float value;
}
@end

@implementation MyClass
@end

但最近,我发现了一种更简单的隐藏private ivar的方法:ivar可以在@implementation后面的{}块中声明,如下所示:

代码语言:javascript
运行
复制
// MyClass.m

@implementation MyClass {
    float value;
}
@end

当不需要隐藏私有方法而只需要隐藏private ivar时,它真的很方便。

然而,我不确定它的语法有效性。任何人都可以通过一些规范的引用来验证或无效它吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-14 00:18:16

这是完全有效的,下面是苹果公司的一份文件:

我个人并不使用它,因为我更喜欢类延续类别的语法。

票数 11
EN

Stack Overflow用户

发布于 2013-06-06 17:17:49

我对此也很好奇。Here is the updated link from Apple

您可以在没有属性的情况下定义实例变量

最佳实践是在任何需要跟踪值或其他对象的时候使用对象上的属性。

如果您确实需要在不声明属性的情况下定义自己的实例变量,则可以将它们添加到类接口或实现顶部的大括号中,如下所示:

@接口SomeClass : NSObject { NSString *_myNonPropertyInstanceVariable;} ... @end @implementation SomeClass { NSString *_anotherCustomInstanceVariable;} ... @end

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8853585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档