如何在 Objective c 的类中创建静态 NSMutableArray?

发布于 2024-09-26 03:40:20 字数 147 浏览 2 评论 0原文

我有 A 类,它是 B 类和 C 类的超类。我需要将 A 类的对象存储在 A 类中定义的“静态”NSMutablearray 中。是否可以使用 B 类和 C 类中的方法修改存储在 MSMutableArray 中的数据C级?如何创建和初始化静态数组?一个例子会更有帮助。提前致谢。

I have Class A which is super class for both class B and class C. I need to store the objects of Class A in 'static' NSMutablearray defined in Class A. Is it possible to modify data stored in MSMutableArray using methods in Class B and Class C? How to create and initialize Static array? An example would be of more help. thanks in advance.

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

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

发布评论

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

评论(1

嘿哥们儿 2024-10-03 03:40:20

这是一种方法。

@interface ClassA : NSObject
{
}

-(NSMutableArray*) myStaticArray;

@end

@implementation ClassA

-(NSMutableArray*) myStaticArray
{
    static NSMutableArray* theArray = nil;
    if (theArray == nil)
    {
        theArray = [[NSMutableArray alloc] init];
    }
    return theArray;
}

@end

这是我经常使用的模式,而不是真正的单例。 ClassA 及其子类的对象可以像这样使用它:

[[self myStaticArray] addObject: foo];

您可以考虑多种变体,例如您可以将该方法设为类方法。您可能还希望在多线程环境中使方法线程安全。例如

-(NSMutableArray*) myStaticArray
{
    static NSMutableArray* theArray = nil;
    @synchronized([ClassA class])
    {
        if (theArray == nil)
        {
            theArray = [[NSMutableArray alloc] init];
        }
    }
    return theArray;
}

Here is one way to do it.

@interface ClassA : NSObject
{
}

-(NSMutableArray*) myStaticArray;

@end

@implementation ClassA

-(NSMutableArray*) myStaticArray
{
    static NSMutableArray* theArray = nil;
    if (theArray == nil)
    {
        theArray = [[NSMutableArray alloc] init];
    }
    return theArray;
}

@end

That is a pattern I use quite a lot instead of true singletons. Objects of ClassA and its subclasses can use it like this:

[[self myStaticArray] addObject: foo];

There are variations you can consider e.g. you can make the method a class method. You might also want to make the method thread safe in a multithreaded environment. e.g.

-(NSMutableArray*) myStaticArray
{
    static NSMutableArray* theArray = nil;
    @synchronized([ClassA class])
    {
        if (theArray == nil)
        {
            theArray = [[NSMutableArray alloc] init];
        }
    }
    return theArray;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文