Я пытаюсь использовать RespondsToSelector, но не могу получить ожидаемый результат, кто-нибудь может найти, что не так в моем коде? - PullRequest
0 голосов
/ 21 апреля 2011
#import "movie.h"
int main (int argc, const char * argv[])
{

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // insert code here...
    movie *obj = [[movie alloc]init];
   [obj findinterestofnum1:(int)200 num2:(int)4 num3:(int)5];

    SEL suf = @selector(findinterestofnum1: num2:num3:);
    BOOL sul = [obj respondsToSelector:suf];

    if(sul)
    {
        NSLog(@"It is implememted");
    }

    else
    {
        NSLog(@" It is not implemented");
    }

    NSLog(@"Hello, World!");

    [pool drain];
    return 0;
}
********-----
@interface movie : NSObject {
@private

}
-(void)findinterestofnum1:(int)p num2:(int)n num3:(int)r;

@end
*******-------
#import "movie.h"


@implementation movie

-(void)findinterestofnum1:(int)p num2:(int)n num3:(int)r
{
  int a ;
    a= (p*n*r/100);


    NSLog(@"interest value is =%d",a);

}




- (void)dealloc
{
    [super dealloc];
}

@end

Я пытаюсь выяснить, реализован ли метод, и если это не так, он должен напечатать, что он не реализован.

1 Ответ

0 голосов
/ 21 апреля 2011

@ toddler, responsedsToSelector просто проверяет, может ли соответствующий объект ответить на этот конкретный метод.Он не проверяет, имеет ли интерфейс это определение, связанное с ним, поскольку это проверка во время выполнения.

Если бы вы удалили код из файла реализации (файл .m), а не из интерфейса, у вас возникла бы ошибка при его выполнении, и вы обнаружили бы, что BOOL sul равен FALSE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...