передал числовой параметр в метод - PullRequest
0 голосов
/ 18 января 2012

Привет, у меня простой вопрос, что является лучшим выбором для этого метода:

Класс продукта

- (NSMutableArray*)getAllProductsByCategory:(NSInteger)categoryID
{
    .................
    sqlite3_bind_int(statement, 1, categoryID);
    .................
}

file.h

@interface ListViewController : UITableViewController {
    NSInteger *number;
}

file.m

// with NSInteger: incompatible pointer to integer conversion
self.listArray = [dbAccess getAllProductsByCategy:number];

Каков наилучший выбор для передачи простого целочисленного параметра в метод: NSInteger, NSNumber или simple int ??

Ответы [ 3 ]

0 голосов
/ 18 января 2012

NSInteger - это просто typedef из int. NSNumber - это обычный класс Objective-C. Если бы вы вызывали методы обычным способом: [self method:myInt], вы можете использовать то, что вы хотите, но если вы будете выполнять селектор с задержкой или в другом потоке, я должен использовать NSNumber, потому что невозможно послать неклассный объект для селектора.
Но обычно я использую NSInteger или NSUInteger (unsigned int) во всем коде с каркасом Cocoa и int, unsigned int в коде, написанном на языке C.

0 голосов
/ 18 января 2012

NSNumbers довольно бесполезны для чего-либо, кроме хранения в массивах или словарях, где вы должны использовать объект.Вы не можете делать математику с ними, и они используют больше памяти и времени обработки для генерации и управления, чем обычные целые числа.NSInteger - хороший выбор.

Вы, вероятно, не хотите, чтобы NSInteger был указателем, поскольку это не объект, это просто другое слово для int.Так что вместо

NSInteger *number;

пишите

NSInteger number;
0 голосов
/ 18 января 2012

Лучше всего использовать NSInteger. Есть некоторые вещи, которые оптимизированы для вас при использовании этого в зависимости от того, какую архитектуру процессора вы используете. См. Этот вопрос для получения дополнительной информации: Когда использовать NSInteger против INT

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