#import "PsychologistViewController.h"
#import "HappinessViewController.h"
@interface PsychologistViewController()
@property (nonatomic) int diagnosis;
@end
@implementation PsychologistViewController
@synthesize diagnosis = _diagnosis;
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"ShowDiagnosis"]) {
[segue.destinationViewController setHappiness:self.diagnosis];
}
else if ([segue.identifier isEqualToString:@"Celebrity"]) {
[segue.destinationViewController setHappiness:100];
}
else if ([segue.identifier isEqualToString:@"Serious"]) {
[segue.destinationViewController setHappiness:20];
}
else if ([segue.identifier isEqualToString:@"TV Kook"]) {
[segue.destinationViewController setHappiness:50];
}
}
****- (void)setAndShowDiagnosis:(int)diagnosis****
{
self.diagnosis = diagnosis;
[self performSegueWithIdentifier:@"ShowDiagnosis" sender:self];
}
-(IBAction)flying
{
[self setAndShowDiagnosis:85];
}
-(IBAction)apple
{
[self setAndShowDiagnosis:100];
}
-(IBAction)dragons
{
[self setAndShowDiagnosis:20];
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
@end
내 질문에 대한 답변이 - (void)setAndShowDiagnosis:(int)diagnosis
과 관련이 있습니다. 이 방법은 어느 .h 파일에서도 public으로 선언되지 않으며 개인적으로도 공개되지 않습니다. 내 질문은이 이유가되는 이유입니다. 단지 setter 구현을 보여 주지만 실제 메소드 선언은 어디에도 없습니다. 이 점을 분명히하는 데 도움이 될만한 점이 있습니다. 아, 그리고 이것은 온라인 강연에서 나온 것입니다. 모든 것이 잘 컴파일되고 실행됩니다.Objective-C에서 선언되지 않은 메서드
+1. 인터페이스 선언의 요점은 클래스의 인터페이스를 정의한다는 것입니다. C++ 또는 Java에서 "개인 메소드"라고 부르는 것은 인터페이스의 일부가 아니므로 인터페이스 선언에 포함시켜야 할 이유가 없습니다. (C++에서는 컴파일러가 정적으로 함수 호출을 해결하고 vtable을 빌드 할 수 있으므로 Java에서는 별도의 선언 및 정의가 없기 때문에 Java에 있어야합니다. ObjC에서는 그 중 어느 것도 적용되지 않습니다.) – abarnert