gpt4 book ai didi

iphone - objective-c : i want the automatic memory management of properties, 但无法从其他类访问

转载 作者:行者123 更新时间:2023-11-28 18:25:55 24 4
gpt4 key购买 nike

我一直对属性感到困惑。有人说要始终对 ivar 使用 setter 和 getter,即使在 ivar 的类中也是如此。所以如果“name”是一个ivar,当提到它时,应该总是使用“self.name”。总是。即使您在声明“名称”的同一个类(class)中也是如此。

首先,这是正确的建议吗?其次,如果我希望获得将“name”声明为属性并合成它所带来的自动内存管理,但我不想让其他类访问更改“name”怎么办?我想这会是一种私有(private)属性(property)?

谢谢!

最佳答案

是的,您应该尽可能尝试使用属性访问器。使用 ARC 在某种程度上减轻了这些担忧,但它仍然是一种不错的风格。至于你的第二个问题,你可以在公共(public)头文件中将属性声明为 readonly 并在类扩展中重新定义它:

MyClass.h中:

@interface MyClass : NSObject

@property (strong, readonly, nonatomic) id foo;

@end

MyClass.m中:

@interface MyClass()

@property (strong, readwrite, nonatomic) id foo;

@end


@implementation MyClass

@synthesize foo = _foo;

// The rest of your code goes here.

@end

这将允许您在 MyClass 的实现中整天调用 [self setFoo:foo],但不能调用其他类。

关于iphone - objective-c : i want the automatic memory management of properties, 但无法从其他类访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9552700/

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