繁体   English   中英

在目标c中创建实例

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM