【问题标题】:Objective-C variable that is accessible in other classes可在其他类中访问的 Objective-C 变量
【发布时间】:2017-02-03 04:53:49
【问题描述】:

我有一个名为 language 的 NSString 对象,我想从其他类访问它,正确的方法是什么?我尝试了以下步骤:

1) 我创建了委托方法并通过委托发送字符串

-(void)setLanguageForController:(NSString *)language {
     self.language = language;
}

控制台显示了这个

无法识别的选择器发送到实例委托

2) 我创建了 getCurrentLanguage 方法

static NSString *language;



+(NSString*)getCurrentLanguage {
   return language;
}

然后像这样访问

NSString *myLanguage = [[MyView alloc] getCurrentLanguage];

【问题讨论】:

    标签: ios objective-c xcode delegates protocols


    【解决方案1】:

    您应该将language 声明为您的类.h 文件中的属性。

    @property (nonatomic, copy) NSString* language;
    

    当你想设置语言时:

    • 初始化你的类实例:yourObj

    • call: yourObj.language = "whatever"[yourObj setLanguage:"whatever"];

      每个属性声明都以类型说明和名称结尾。 例如:

    @property(copy) NSString *title;

    此语法等效于声明以下访问器方法:

    - (NSString *)title;
    - (void)setTitle:(NSString *)newTitle;
    

    阅读更多关于objective-C属性here

    【讨论】:

      【解决方案2】:

      如果你想从其他类访问它,你不需要创建像setLanguageForControllergetCurrentLanguage 这样的方法来获取和设置你的变量。您需要在您的interface 文件或.h 文件中创建一个property,它将是公共的,它提供了它的gettersetter 方法,您可以通过您的instance 变量从任何类访问它们包含您的 property 的类。

      您可以像这样在 .h 或 interface 类文件中声明您的 property

      @property (nonatomic, strong) NSString* language;
      

      要设置它的值,你可以使用。

      obj.language = @"value"; or [obj setLanguage:@"value"];
      

      获得它的价值。您需要像这样使用相同的instance 变量

      NSString *strLanguageValue = obj.language;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-25
        • 2013-07-04
        • 1970-01-01
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多