[英]creating instances in objective c
这是我的代码:
//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
任何示例代码都很棒!
谢谢以利亚
self
表示当前对象。
您只需要这样调用方法。
[self startTask];
-(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
请注意,接口声明中没有定义类别。
子类化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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.