你如何在课堂之间分享ivars。

时间:2010-01-19 02:10:02

标签: iphone objective-c class

在一个班级。我有

NSMutableArray *rountines;

在另一个类.m我想做这样的事情

 [routines addOject:@"Hello];

另一个类是ModalViewController类型设置。

所以,从本质上讲,我希望MVC的.m文件能够读取,编辑和执行其他东西到我在标题中声明的ivars。

干杯,

萨姆

修改

另一个与我想要实现的类似的例子就像编辑屏幕。

2 个答案:

答案 0 :(得分:2)

你真的不能在课堂之间分享ivars。 ivar代表实例变量,它是属于某个特定对象实例的变量。解决此问题的方法是允许其他对象访问此对象的状态。这通常通过setter和getter方法完成。 Objective-C 2.0通过提供@property和@synthesize关键字使这更容易。

如果您有权访问具有例程数组的对象,则可以通过其属性(getter方法)访问它,如下所示:

[[someObject routines] addObject:@"hello"];

答案 1 :(得分:0)

you can either do this by making the ivars you want to share globals(在这种情况下,它们将是单例类或app委托类的ivars)或者通过传递对要修改ivars的类的引用作为ModalViewController类的方法的参数:

@implementation ModalViewController
......
-(void)addObjectToRoutinesFromClass: (MyClass *)myclass {
        [myclass.routines addObject:@"Hello"];
}

@implementation MyClass
  ......
  ModalViewController *myModalViewController = [[ModalViewController alloc] init];  
[myModalViewController addObjectToRoutinesFromClass:self];

@end