在一個類的.h我有你如何在課堂上分享ivars?
NSMutableArray *rountines;
在.M我想要做這樣的事情
[routines addOject:@"Hello];
另一類是ModalViewController類型設置其他類。
所以,實質上我希望MVC的.m文件能夠讀取,編輯和做其他事情給我在頭文件中聲明的ivars。
乾杯,
山姆
編輯
另一個例子,這是類似於即時試圖實現的是像編輯畫面。
在一個類的.h我有你如何在課堂上分享ivars?
NSMutableArray *rountines;
在.M我想要做這樣的事情
[routines addOject:@"Hello];
另一類是ModalViewController類型設置其他類。
所以,實質上我希望MVC的.m文件能夠讀取,編輯和做其他事情給我在頭文件中聲明的ivars。
乾杯,
山姆
編輯
另一個例子,這是類似於即時試圖實現的是像編輯畫面。
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
你真的不能在類之間共享ivars。伊娃代表實例變量,並且這是一個屬於對象某個特定實例的變量。解決這個問題的方法是允許其他對象訪問這個對象的狀態。這通常通過setter和getter方法來完成。 Objective-C 2.0通過提供@property和@synthesize關鍵字使這更容易。
如果你有機會訪問到具有例程數組對象,你可以通過它的屬性(getter方法)這樣的訪問:
[[someObject routines] addObject:@"hello"];
還檢查了這一點,並閱讀有關聲明屬性:http://developer.apple.com/mac/library/documentation/cocoa/conceptual/ObjectiveC/Introduction/introObjectiveC.html – Nimrod 2010-01-19 02:21:55
屬性可以像someObject.routines一樣訪問。所以[someobject.routines addObject:@「yello」]; – CVertex 2010-01-19 02:39:17
會'someObject'是它生活的類,或什麼?你能再解釋一下嗎? – 2010-01-19 02:56:35
感謝,但我怎麼做呢? :S「新手」 – 2010-01-19 02:14:49
實例變量不是全局的,它們屬於一個對象的實例。 – 2010-01-19 02:18:30
@darren .... objective-c globals是你定義它們的類的ivars,我在答案中澄清了它。 – ennuikiller 2010-01-19 02:22:37