Objective-C:为他们制作 iVars @public 或 @synthesizing @properties?我什么时候应该使用属性?

发布于 2024-12-28 10:35:46 字数 509 浏览 3 评论 0原文

我的类中有一些实例变量,我希望可以在任何地方访问它们。像这样:

@interface SomeObject : NSObject
{
    @public
        NSString *someString;
}
@end

@implementation SomeObject
@end

我可以使用如下所示的 -> 语法从实例访问该属性,就像我在 C++ 中所做的那样:

someObjectInstance->someString

我应该为 someString 创建一个属性吗?我想要的是它可以被外界访问吗?我将在我的界面中为 someString 创建一个 @property ,并在我的实现中为 @synthesize 创建一个 @property ,这将使我能够使用点访问它句法。

I have some instance variables in my class that I'd want to be accessible anywhere. Like so:

@interface SomeObject : NSObject
{
    @public
        NSString *someString;
}
@end

@implementation SomeObject
@end

I can access the property from the instance using the -> syntax like below, as I would do in C++:

someObjectInstance->someString

Should I make a property for someString when all I want is for it to be accessible by the outside world? I would create a @property for someString in my interface and @synthesize it in my implementation, which would enable me to access it using the dot syntax.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

逆蝶 2025-01-04 10:35:46

一般来说,如果要公开数据,就应该使用属性。一般来说,公开实例变量是一个坏主意。

Generally speaking, if you want to expose data, you should use properties. Making instance variables public is a bad idea in general.

若有似无的小暗淡 2025-01-04 10:35:46

是的,因为当您将其设为 @property 时,您所做的就是指导使用它的人们调用 setSomeStringsomeString 方法,影响。即使您@synthesize使用这些方法,代码质量也会更好,因为如果需要,您可以更改它们。如果您只是使用指针引用,如果您发现自己需要拦截访问,您将无法做到这一点。

Yes, because what you're doing when you make it a @property is directing folks using it to call the setSomeString and someString methods, in effect. Even if you're @synthesizeing them, it's better for your code quality to be using the methods, because you could change them if you need to. If you're just using the pointer reference, if you find yourself needing to intercept accesses you won't be able to.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文