如何从其他实现文件的类方法中访问实例变量的属性(标题,状态等)?我试过@synthesize,但我无法让它工作。更确切地说;我需要访问NSWindowController类的IBOutlets。
答案 0 :(得分:1)
首先,您应该先阅读本章。
Introduction to The Objective-C Programming Language
你想知道什么?显然,如果没有实例,则无法访问实例变量。类方法是一种静态方法(消息),您可以在没有任何对象实例的情况下访问它。你能准确一下大卫吗?
答案 1 :(得分:0)
好的,你只需要在类接口中声明你的属性。您的实例变量以IBOutlet为前缀,表示必须使用nib设置它们。 也许你已经知道了所有这些。对不起,那个案子。
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MyClass.h file
*/
@interface MyClass
{
// instance vars
IBOutlet NSString *title; // Do you have this ? Should be bind in IB.
}
// and this to declare the accessors as public methods
@property (nonatomic, retain) NSString *title;
/*
other methods signature declaration
*/
@end
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MyClass.m file
*/
@implementation MyClass
@synthesize title; // allow to generate the accessors of your property
/*
methods implementation here
*/
@end
如果你实例化你的类,只需调用accessor [myObjectOfMyClass title]。 也许可以看到单例设计模式,它是最常用和最有用的一种,可以轻松检索必须唯一的对象实例。 What does your Objective-C singleton look like?
Vincent Zgueb答案 2 :(得分:0)
我经常使用我的appcontroller作为我需要在所有类中访问的内容的中介...假设你的appcontroller也是你的应用程序的委托。从任何课程我都可以使用[NSApp委托]到我的appcontroller(app delegate)。
考虑到这一点,我确保我的appcontroller实例化窗口控制器之类的东西。然后,如果我需要访问窗口控制器,我在appcontroller中为它创建一个实例变量,然后为该实例变量创建一个访问器方法。例如:
appcontroller.h中的:
MyWindowController *windowController;
@property (readonly) MyWindowController *windowController;
appcontroller.m中的:
@synthesize windowController;
然后从任何类我可以使用以下命令到达窗口控制器的实例:
MyWindowController *windowController = [[NSApp delegate] windowController];