Ios 从另一个类objc访问变量

Ios 从另一个类objc访问变量,ios,objective-c,class,variables,Ios,Objective C,Class,Variables,如何访问在类viewController中定义的实例变量 ViewController.h @interface ViewController : UIViewController { Class1* class1; } ViewController.m @implementation ViewController class1 = [[Class1 alloc]init]; @end 类别1.h @interface Class1 : NSObject { NSMutableArr

如何访问在类viewController中定义的实例变量

ViewController.h

@interface ViewController : UIViewController
{
    Class1* class1;
}
ViewController.m

@implementation ViewController
class1 = [[Class1 alloc]init];
@end
类别1.h

@interface Class1 : NSObject
{
NSMutableArray* variablesArray;
}
@property NSMutableArray* variablesArray;
1.m班

@implementation Class1
@synthesize variablesArray;
@end
现在我想从Class2.m访问实例“class1”变量“variablesArray”。我想从MutableArray“variablesArray”中添加和获取对象。可能吗?

是的,可能

将对象设为其他类并访问该变量

在claas2中导入类1(#导入“类1”)

现在访问像

[objClass1.variableArray  addObject:@"object"];

[objClass1.variableArray  objectAtIndex:0];
如果要访问数组的同一个实例,请创建一个Singleton类 通过在类中添加此类方法

+ (Class1 *)sharedInstance
{
    static Class1 *shared = nil;

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken,
                  ^{
                      shared = [[self alloc] init];
                  });

    return shared;
}
和类2中的访问类似

[[Class1 sharedInstance] variableAray];

通过简单地使用点运算符,可以访问类实例的公共属性。请注意,通过设置(readwrite,readonly)等属性,有几种封装实例变量的方法

确保在Class1的init方法中正确初始化NSMutableArray

- (id)init
{  
  self = [super init];
  if (self) {
    _variablesArray = [NSMutableArray array];
  } 
  return self;
}

嘿,您可以通过如下简单地设置变量的属性来访问另一个类中的变量

@属性(非原子,强)NSString*str


我给了一个接近这个的链接,请检查这个链接

@implementation ViewController class1=[[class1 alloc]init]@end
是一个语法错误,实现中不能有裸代码。可以在任何其他类中访问class1的属性。只需在要访问该对象的对应类中创建class1对象,并在我编写时将该属性调用为ClassObject.VariablesArray:class1*objClass1=[[class1 alloc]init];编译器创建Class1的新实例(objClass1),是真的吗?但我想访问在ViewController中创建的实例的变量。我不想在类2中分配新实例。m@user2374693这不是正确的方法。为什么不想在class2中创建class1的对象?如果要访问类的属性,则需要创建该类的实例class@user2374693我们可以在这里继续聊天,例如我在Class1的实例中存储使用过的随机数。Class2用于查找随机数,应该将该数添加到实例Class1的可变数组中。我不能在类2中分配的实例中存储数字,因为分配时,使用过的数字会被重写。@user2374693在这种情况下,您需要创建一个单例类。检查我的最新答案
Class1 aClass = [[Class1 alloc] init];
aClass.varibalesArray addObject:@[ @"someObject" ];
- (id)init
{  
  self = [super init];
  if (self) {
    _variablesArray = [NSMutableArray array];
  } 
  return self;
}