0
在我的应用程序中,有一些地方我必须调用其他类中的一组代码。我通常使用协议来做到这一点协议与直接消息在Cocoa Touch
// Teacher.m
@protocol TeacherProtocol
- (void)assignHomeWork;
- (void)respondToAssingment;
@end
for (Student *student in self.studentInClass) {
[student assignHomeWork];
}
// Student.m <TeacherProtocol>
- (void)assignHomeWork {
[self receivedAssignmentPaper];
}
// Nerd.m : Student
- (void)assignHomeWork {
[super assignHomeWork];
[self listenWithAttention];
}
// Douchebag.m : Student
- (void)assignHomeWork {
[super assignHomeWork];
[self listenToHisIPod];
}
// Blonde.m : Student
- (void)assignHomeWork {
[super assignHomeWork];
[self makeUp];
}
在上面的例子中,它的确定和确实有道理。但是,在某些情况下,班级应该向其他班级发送消息,并且永远不会有其他班级收到此消息。
// Room.m
- (IBAction)mainSwitchWasToggle:(id)sender {
[self.mainLightBulb toggle];
}
// MainLightBulb.m
- (void)toggle {
if ([self.bulb isTurnOn]) {
[self.bulb turnOff];
} else {
[self.bulb turnOn];
}
}
的问题是,我应该把拨动进入房间的对象的协议,或将其作为这样一个公共的方法?会不会有其他影响?
呀,你犯了一个点,我提出了一个错误的榜样。在我的实际代码中,我遵循完全不同的类。 –