gpt4 book ai didi

objective-c - 由 NSMutableArray 支持的 NSArray @property

转载 作者:IT老高 更新时间:2023-10-28 11:45:17 29 4
gpt4 key购买 nike

我已经定义了一个类,我希望一个公共(public)属性看起来好像由 NSArray 支持一样。这很简单,但在我的情况下,实际的支持 ivar 是 NSMutableArray:

@interface Foo
{
NSMutableArray* array;
}
@property (nonatomic, retain) NSArray* array;

@end

在我的实现文件 (*.m) 我 @synthesize 属性,但我立即遇到警告,因为使用 self.words 是与尝试修改 NSArray 相同。

这样做的正确方法是什么?

谢谢!

最佳答案

我会在你的头文件中声明一个 readonly NSArray 并覆盖该数组的 getter 以返回一个私有(private) NSMutableArray 的副本你的实现。请考虑以下内容。

Foo.h

@interface Foo

@property (nonatomic, retain, readonly) NSArray *array;

@end

Foo.m

@interface Foo ()

@property (nonatomic, retain) NSMutableArray *mutableArray

@end

#pragma mark -

@implementation Foo

@synthesize mutableArray;

- (NSArray *)array
{
return [[self.mutableArray copy] autorelease];
}

@end

关于objective-c - 由 NSMutableArray 支持的 NSArray @property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8407267/

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