Наилучшая практика - иметь ровно один прототип для каждой функции и метода, который вы определяете.Где должен находиться этот прототип, зависит от того, хотите ли вы представить функцию миру за пределами вашего класса.Если вы пропустите прототип и просто включите тело функции, вам, вероятно, это сойдет с рук.(Например, в приведенном ниже примере вы можете отправить свой контроллер stop
из-за пределов класса во время выполнения.) Но лучше всего удостовериться, что вы поставили точки i и пересекли t.Обратите внимание на мой пример ниже, что все учтено.Надеюсь, это поможет.
MyAppController.h:
@interface MyAppController : NSObject {
id thing;
@private
id noneOfYourBeeswax;
}
@property (nonatomic, readonly) id thing;
-(id)initWithThing:(id)thing;
-(void)start;
@end
MyAppController.m:
@interface MyAppController () // anonymous category
@property (readwrite, retain) id thing;
@property (nonatomic, retain) NSThread *noneOfYourBeeswax;
-(void)start_internal;
-(void)stop;
@end
@implementation MyAppController
@synthesize thing;
@synthesize noneOfYourBeeswax;
-(id)initWithThing:(id)thing_ {
if ((self = [super init]) != nil) {
self.thing = thing_;
}
return self;
}
-(void)start {
// I think I'm doing this wrong but you get the picture
self.noneOfYourBeeswax = [[[NSThread alloc] initWithTarget:self selector:start_internal object:nil] autorelease];
}
// The real worker
-(void)start_internal {
while (such and such) {
// do something useful
}
[self stop];
}
-(void)stop {
// clean up
}
@end