这是我的代码:
//ECHOAppDelegate.m
@implementation ECHOAppDelegate
...
@end
//PtyView.m
@interface PtyView (PtyPrivate)
-(void)startTask;
-(void) didRead: (NSNotification *)fileNoty;
@end
@implementation PtyView
...
-(void)startTask {
//starts task
}
@end
现在,如何从ECHOAppDelegate.m触发“startTask”?我需要创建一个实例?我是初学者:D
任何示例代码都很棒!
谢谢, 利亚
答案 0 :(得分:0)
self
代表当前对象。
你只需要调用这样的方法。
[self startTask];
答案 1 :(得分:0)
-(void)startTask;
似乎是私有实现,理论上不应该从外部类调用。
要回答您的问题,您可以这样称呼:
PtyView *v = [[PtyView alloc] init];
[v startTask];
[v release];
虽然您会收到警告,PtyView
可能无法回复startTask
。因为它不在类的公共接口中。
更新:上面的代码假设当startTask
返回时,您已完成此对象。但有些东西告诉我你可能正在使用异步回调。如果是这种情况,则startTask
可能会立即返回,您不会在那里和那里发布它。通常在这种情况下,PtyView
会通知您任务完成情况。所以你在任务完成后释放它。
<强> UPDATE2 强>: 公开方法很容易。您只需在公共接口(类的头文件)中声明它:
//in PtyView.h
@interface PtyView
-(void)startTask;
@end
//in PtyView.m
@implementation PtyView
...
-(void)startTask {
//starts task
}
@end
请注意,接口声明中没有定义类别。
答案 2 :(得分:0)
如何对ECHOAppDelegate进行子类化? (然后确保PtyView继承自NSObject?)
// cf. http://amath.colorado.edu/pub/mac/programs/PseudoTTY.zip
@interface ECHOAppDelegate : PtyView
...
@end
@implementation ECHOAppDelegate
- (id) init
{
self = [super init];
if (!self) return nil;
...
return self;
}
...
[self startTask];
...
@end