菜鸟教程小白 发表于 2022-12-13 17:10:22

objective-c - 使用单例类的全局变量 NSMuteableArray


                                            <p><p>我在创建一种将集合传递给不同 ViewController 的好方法时遇到了麻烦。例如,我创建了一个名为 Message 的自定义类,其中包含一堆属性。我想要一个全局的 NSMutableArray 存储在一个名为消息的全局变量中,我可以添加到任何地方或从任何地方获取。 Stackoverflow 上的每个人都说不要使用你的 delagate 类来存储全局变量,所以我创建了一个名为 Shared 的单例类。在那里,我为 NSMutableArray 创建了一个名为 messages 的属性,如下所示:</p>

<pre><code>
@interface Shared : NSObject {

}

@property (nonatomic, retain) NSMutableArray *messages;

+(Shared *) sharedInstance;

@end
</code></pre>

<p>而我的 .h 文件是(重要的部分):</p>

<pre><code>
#import &#34;Shared.h&#34;
static Shared* sharedInstance;

@implementation Shared

@synthesize messages;

static Shared *sharedInstance = nil;

-(id) init {
    self = ;
    if (self != nil){

    }
    return self;
}

-(void) initializeSharedInstance {

}

+ (Shared *) sharedInstance{
    @synchronized(self) {
      if (sharedInstance == nil){
            sharedInstance = [ init];
            ;

      }
      return (sharedInstance);
    }
}

</code></pre>

<p>在我的另一个 ViewController 中,我首先导入“Shared.h”,然后试试这个:</p>

<pre><code>
[.messages addObject:m];

NSLog(.messages]);
</code></pre>

<p>它一直打印 null 而不是 m 个对象的集合。有什么想法吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你需要有一个静态变量。</p>

<p>在.h中:</p>

<pre><code>@interface Shared : NSObject
{
    NSMutableArray *messages;
}

@property (nonatomic, retain) NSMutableArray *messages;

+ (Shared*)sharedInstance;

@end
</code></pre>

<p>在.m:</p>

<pre><code>static Shared* sharedInstance;

@implementation Shared

@synthesize messages;


+ (Shared*)sharedInstance
{
    if ( !sharedInstance)
    {
      sharedInstance = [ init];

    }
    return sharedInstance;
}

- (id)init
{
    self = ;
    if ( self )
    {
      messages = [ init];
    }
    return self;
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于objective-c - 使用单例类的全局变量 NSMuteableArray,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/5795997/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/5795997/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: objective-c - 使用单例类的全局变量 NSMuteableArray