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 "Shared.h"
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]