Цель C: проблема с get-методами в классе - PullRequest
0 голосов
/ 09 июля 2011

У меня есть класс:

@interface SearchBase : NSObject
{
    NSString *words;
NSMutableArray *resultsTitles;
NSMutableArray *resultsUrl;
NSMutableArray *flag;
}

@property (copy, nonatomic) NSString *words;

- (id) getTitleAtIndex:(int *)index;
- (id) getUrlAtIndex:(int *)index;
- (id) getFlagAtIndex:(int *)index;
@end

@implementation SearchBase
 - (id) initWithQuery:(NSString *)words 
{
if (self = [super init])
{
    self.words = words;
}
return self;
}
- (id) getTitleAtIndex:(int *)index
{
return [resultsTitles objectAtIndex:index];
}

- (id) getUrlAtIndex:(int *)index
{
return [resultsUrl objectAtIndex:index];
}

- (id) getFlagAtIndex:(int *)index
{
return [flag objectAtIndex:index];
}
@end

Но когда я пытаюсь использовать некоторые из этих get-методов в подклассе, я вижу:

warning: passing argument 1 of 'getTitleAtIndex:' makes pointer from integer without a cast 
warning: passing argument 1 of 'getFlagAtIndex:' makes pointer from integer without a cast
warning: passing argument 1 of 'getUrlAtIndex:' makes pointer from integer without a cast

И программа работает неправильно. В чем дело? Как это исправить?

1 Ответ

5 голосов
/ 09 июля 2011

Вы передаете целочисленные значения в ваши методы, что неверно, потому что объявленные вами функции принимают только integer pointer, а не значение, которое является причиной появления предупреждения. И objectAtIndex: метод принимает только целое значениеуказатель, поэтому, если вы запустите, это может вызвать крах в вашем приложении.

Самое простое решение - это изменение типа параметра в ваших функциях.Реализация может быть похожа на функцию ниже.

- (id) getTitleAtIndex:(int )index
{
    if(index < [resultsTitles count] )
        return [resultsTitles objectAtIndex:index];
    else
       return nil;
}
...