在类方法之间匹配2个NSString值

时间:2013-04-18 10:22:23

标签: ios objective-c class methods

我知道我不能在Class方法中传递实例变量,所以我不再混淆两者之间的区别。

因此我有点陷入困境。

我有2个类方法,他们都可以将NSString作为参数。

无论如何他们可以匹配吗? 因为一个Class方法有一个字符串,这个字符串是一个需要在按下按钮后在Safari中打开的URL,因此@selector(openBrowser:)需要知道该网址来自JWKObjectView01

请告诉我有办法吗?

我已经尝试将其全部更改为实例方法,但是当我按下按钮时应用程序崩溃 - 所以我正在努力解决这个问题: - )

提前致谢。 PS我知道我开始说我明白你不能混合两个类 - 据我所知,但也许我错过了什么?

//添加了代码:

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"];
  }

1 个答案:

答案 0 :(得分:1)

为网址使用静态变量。使用initialize方法(不是init方法)初始化它。您当然可以添加一个设置静态varialbe值的方法。

静态varialbe与其他语言中的类变量一样,在运行时只存在一次。

但它们不是类变量。当名称用于其他类中的其他静态变量时,您可能会遇到命名冲突。因此,让自己熟悉单例模式,并考虑在需要静态变量时使用它。

有些人“滥用”应用程序委托对象作为全局特征值的包含。这可能不是“出书”,但工作正常并且很常见。 但是,我相信你用单身人士会好得多。

所有这些假设相关的URL一次为JWKObjectView01的所有实例带有相同的值。