gpt4 book ai didi

objective-c - @interface 或@implementation 中的私有(private)ivar

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

是否有任何理由在 @interface 而不是 @implementation 中声明私有(private) ivar?

我在整个互联网上看到这样的代码(包括 Apple 提供的文档):

Foo.h

@interface Foo : NSObject {
@private
id _foo;
}
@end

Foo.m

@implementation Foo
// do something with _foo
@end

头文件定义类的公共(public)接口(interface),而私有(private) ivar 是......好吧......私有(private)的。那么为什么不这样声明呢?

Foo.h

@interface Foo : NSObject
@end

Foo.m

@implementation Foo {
@private
id _foo;
}

// do something with _foo
@end

最佳答案

@implementation 中声明实例变量是 Obj-C 的最新特性,这就是为什么您在 @interface 中看到很多代码的原因 - 那里别无选择。

如果您使用的编译器支持在实现中声明实例变量,则声明它们可能是最好的默认值 - 只有在其他人需要访问它们时才将它们放在接口(interface)中。

编辑:附加信息

在实现中声明的实例变量是隐式隐藏的(实际上是私有(private)的)并且可见性不能被改变 - @public, @protected@private 不会产生编译器错误(至少在当前的 Clang 中)但会被忽略。

关于objective-c - @interface 或@implementation 中的私有(private)ivar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8840884/

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