2010-01-19 110 views
0

在一個類的.h我有你如何在課堂上分享ivars?

NSMutableArray *rountines; 

在.M我想要做這樣的事情

[routines addOject:@"Hello]; 

另一類是ModalViewController類型設置其他類。

所以,實質上我希望MVC的.m文件能夠讀取,編輯和做其他事情給我在頭文件中聲明的ivars。

乾杯,

山姆

編輯

另一個例子,這是類似於即時試圖實現的是像編輯畫面。

回答

0

you can either do this by making the ivars you want to share globals(在這種情況下,它們將是單例類或應用委託類的實例變量)或通過使參照要修改的實例變量的類的作爲參數傳遞給該ModalViewController類的方法:

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

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

@end 
+0

感謝,但我怎麼做呢? :S「新手」 – 2010-01-19 02:14:49

+0

實例變量不是全局的,它們屬於一個對象的實例。 – 2010-01-19 02:18:30

+0

@darren .... objective-c globals是你定義它們的類的ivars,我在答案中澄清了它。 – ennuikiller 2010-01-19 02:22:37

2

你真的不能在類之間共享ivars。伊娃代表實例變量,並且這是一個屬於對象某個特定實例的變量。解決這個問題的方法是允許其他對象訪問這個對象的狀態。這通常通過setter和getter方法來完成。 Objective-C 2.0通過提供@property和@synthesize關鍵字使這更容易。

如果你有機會訪問到具有例程數組對象,你可以通過它的屬性(getter方法)這樣的訪問:

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

還檢查了這一點,並閱讀有關聲明屬性:http://developer.apple.com/mac/library/documentation/cocoa/conceptual/ObjectiveC/Introduction/introObjectiveC.html – Nimrod 2010-01-19 02:21:55

+0

屬性可以像someObject.routines一樣訪問。所以[someobject.routines addObject:@「yello」]; – CVertex 2010-01-19 02:39:17

+0

會'someObject'是它生活的類,或什麼?你能再解釋一下嗎? – 2010-01-19 02:56:35