所以,你有两个instaces - 一个带有按钮,另一个带有标签。我假设他们都是NSViewController的后代或者管理底层视图。
问题是,您发现无法解决第一个实例的方法中包含标签的第二个实例。
您需要在第一个实例的类来定义属性:
@property(weak) SecondClass *secondInstance;
然后在按钮按下方法:
-(void)clickedButton
{
[self.secondInstance changeText];
}
有一个问题留给:谁负责设置第一个实例的属性我们定义了什么?这取决于谁创建了他们两个,可能只是应用程序委托或封装控制器,你知道更好。
UPD:如果两个控制器都通过的AppDelegate创建:
#import "FirstClass.h"
#import "SecondClass.h"
@interface AppDelegate()
// case A - manual
@property(strong) FirstClass *firstInstance;
@property(strong) SecondClass *secondInstance;
// case B - declared in xib
//@property(weak) IBOutlet FirstClass *firstInstance;
//@property(weak) IBOutlet SecondClass *secondInstance;
@end
@implementation AppDelegate
...
- (void)applicationDidFinishLaunching:(NSNotification *)notification
{
// Create them
self.firstInstance = [[FirstClass alloc] init...];
self.secondInstance = [[SecondClass alloc] init...];
// Or maybe they are declared in MainMenu.xib, then you do not create them
// by hand, but must have outlets for both. See case B above.
// Connect them
self.firstInstance.secondInstance = self.secondInstance;
...
}
注意,类是不相同的对象(实例)。类是一个命名的方法集合,主要用于实例。在Objective-C中,类不仅仅是一个名称,而且也是一个对象,所以你可以调用一个方法(例如,发送一条消息到类对象)。但在这里我们总是谈论对象(实例),所以忘掉类 - 我们通过强属性或弱插口来持有对象,这取决于它们是如何创建的,并且在对象上操作,而不是在类上操作。
我想弄清楚你需要在这里学习什么...也许网点?你不想初始化一个新的对象,但有些已经存在,通过你的标题,我认为你需要了解类方法... – 2014-10-01 00:39:29
是的,这是一个伟大的混乱,特别是[超级初始化]部分。请描述你正在努力达到的目标,因为即使是目前的努力也没有给出任何线索。 :) – user3125367 2014-10-01 00:48:43
请检查答案,我想,这是你在找什么。 – 2014-10-01 01:00:44