2012-07-19 52 views
0

我有一個選項卡式視圖,我需要從不同的選項卡式視圖中選擇不同的選項,這些選項應該附加在同一個字符串中。爲此,我想使用一個NSMutableString。Global NSMutableString

選擇所有選項後,根據需要形成字符串。我想在未選中的下一個視圖中訪問此NSMutableString。我想爲此我需要將NSMutableString聲明爲全局變量?

有人可以幫助我這個。我是新來的Objective-C和Xcode。謝謝。任何幫助深表感謝!

回答

1

另一種選擇是將一個單一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

1

你可以使用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

2
  1. 你可以使你的應用程序代理
  2. 的屬性可以使用一個單
  3. 你可以使用NSUserDefaults的
  4. 你可以安排所有的「利害關係人」的對象分享一些共同的包含指向字符串的字段的對象(在初始化過程中通過可尋址性)

可能還有其他幾個。