2013-04-18 43 views
0

我知道我不能在Class方法中傳遞實例變量,所以我不再困惑這兩者之間的區別。在類方法之間匹配2個NSString值

因此我有點卡住了。

我有2類方法,它們都可以採用NSString作爲參數。

有反正他們可以匹配嗎? 因爲一個類方法,這將是一個需要在Safari按下一個按鈕後打開,因此@selector(openBrowser:)需要知道的網址是什麼,從JWKObjectView01

請告訴我有一種方法,以一個URL字符串做這個??

我已經嘗試過了所有更改爲實例方法,但應用程序崩潰,當我按下按鈕 - 所以我想先工作了這一點:-)

感謝。 PS我知道我開始說我明白你不能混合2班 - 據我所知,但也許我錯過了什麼?

//添加代碼:

UIView類 .h文件中

@interface JWKObjectView01 : UIView <UIWebViewDelegate> 
{ 
    NSString *string; 
    NSURL *url; 

    NSUserDefaults *defaults; 
} 

+ (JWKObjectView01 *)anyView:(UIView *)anyView 
         title:(NSString *)title 
         weburl:(NSString *)webstring; 

+ (void)openBrowser:(NSString *)urlString; 

.m文件

+ (JWKObjectView01 *)anyView:(UIView *)anyView 
         title:(NSString *)title 
         weburl:(NSString *)webString 
{ 
    JWKObjectView01 *anotherView = [[JWKObjectView01 alloc] initWithFrame:CGRectMake(0,0,320,200)]; 
    anotherView.backgroundColor = [UIColor yellowColor]; 

    [anyView addSubview:anotherView]; 

    UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    button.frame = CGRectMake(20, 20, 100, 100); 

    [button setTitle:title forState:UIControlStateNormal]; 
    [button addTarget:self action:@selector(openBrowser:) forControlEvents:UIControlEventTouchUpInside]; 

    [anotherView addSubview:button]; 

    return anotherView; 
} 

+ (void)openBrowser:(NSString *)urlString; 
{ 

    //This is where I am stuck and I need the variable - weburl:(NSString *)webString - 

    NSURL *url = [NSURL URLWithString:urlString]; 

    [[UIApplication sharedApplication] openURL:url]; 
} 

.m文件視圖控制器

-(void)viewDidLoad 
    { 
    [JWKObjectView01 anyView:self.view title:@"OPEN" weburl:@"http://google.com"]; 
    } 
+0

請發佈您嘗試過的東西。 –

+0

「一個Class方法有一個字符串,這個字符串在按下按鈕後需要在Safari中打開」 - 如果沒有代碼示例,這部分內容很難理解:關於類變量「有」字符串聲音可疑的,因爲類方法可以保持狀態的唯一方法是通過其他類中的靜態變量和單例。我懷疑這個問題在那個地區的某個地方。請張貼課程方法'A'的相關代碼。 – dasblinkenlight

+0

好吧 - 我已經添加了代碼,希望它有幫助。 –

回答

1

使用靜態變量e爲url。在initialize方法中初始化它(這不是init方法)。你當然可以添加一個方法來設置靜態變量的值。

靜態變量與其他語言中的類變量一樣,在運行時僅存在一次。

但他們沒有類變量。當名稱用於其他類中的其他靜態變量時,您可能會發生命名衝突。因此,讓自己熟悉單例模式,並考慮在需要靜態變量時使用它。

有些人將應用程序委託對象「濫用」爲全局字符值的包含器。這可能不是「出書」,但工作正常,並且很常見。但是,我相信你對單身人士的待遇要好得多。

所有這些假設相關URL將一次對所有JWKObjectView01的實例攜帶相同的值。

+0

太棒了 - 非常感謝你:-) –