Global NSMutableString

问题描述:

我有一个选项卡式视图,我需要从不同的选项卡式视图中选择不同的选项,这些选项应该附加在同一个字符串中。为此,我想使用一个NSMutableString。Global NSMutableString

选择所有选项后,根据需要形成字符串。我想在未选中的下一个视图中访问此NSMutableString。我想为此我需要将NSMutableString声明为全局变量?

有人可以帮助我这个。我是新来的Objective-C和Xcode。谢谢。任何帮助深表感谢!

另一种选择是将一个单一eton对象,如果你不只有一个你想要共享的变量,那么这个对象特别有用。

下面是关于做单身权好的帖子:http://lukeredpath.co.uk/blog/a-note-on-objective-c-singletons.html

基本上你必须写一个非常简单的类是这样的:

State.h:

@interface State : NSObject 

@property (atomic, strong) NSMutableString *mystring; 
+ (id)sharedInstance; 

@end 

State.m:

#import "State.h" 
@implementation State 

@synthesize mystring; 

+ (id)sharedInstance 
{ 
    static dispatch_once_t pred = 0; 
    __strong static id _sharedObject = nil; 
    dispatch_once(&pred, ^{ 
    _sharedObject = [[self alloc] init]; // or some other init method 
    }); 
    return _sharedObject; 
} 
@end 

然后当你需要它时你可以这样做:

import "State.h" 

[State sharedInstance].mystring 

即使是简单的,你可以使用单宏从这里:https://gist.github.com/1057420#gistcomment-63896

我个人认为这种模式是非常有用的。

+0

我需要导入“State.h”在哪里使用? – 2012-07-26 13:17:15

+0

哦对,是的,在任何你想访问''State sharedInstance''的类中,都需要导入'State.h''。 – timofei7 2012-07-26 21:53:55

你可以使用NSUserDefaults的这个:

为了节省:(在以前的视图类加载下一个视图之前调用)

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:yourString forKey:@"KEYNAMEHERE"]; 
[defaults synchronize]; 

要检索(打电话的时候,下一个视图中加载下一个视图的类)

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSMutableString *string = [defaults objectForKey:@"KEYNAMEHERE"]; 
+0

谢谢! SO setobject:yourstring - 其中“yourstring”应该是NSMutableString类型的变量名? – 2012-07-19 23:40:34

+0

是的,而KEYNAMEHERE是一个关键字的名称(可以是任何东西,只是让它描述对象是什么,所以可能类似'globalString')。 – 2012-07-19 23:41:45

+0

非常感谢!让我试试这个,回到你身边! – 2012-07-19 23:43:17

  1. 你可以使你的应用程序代理
  2. 的属性可以使用一个单
  3. 你可以使用NSUserDefaults的
  4. 你可以安排所有的“利害关系人”的对象分享一些共同的包含指向字符串的字段的对象(在初始化过程中通过可寻址性)

可能还有其他几个。