2012-01-18 3 views
0

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

Продукт класса

- (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]; 

Что является лучшим чо ice для прохода простого целого параметра, например параметра: NSInteger, NSNumber или простой int ??

ответ

0

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

+0

Хорошо, THK. Один вопрос: я должен установить свойство для nsinteger? @property (сохранение, неатомное) NSInteger * number; – Maurizio

+0

Это зависит от того, для чего вы его используете. Вы, конечно, можете установить для него свойство, но поскольку это не объект, он не будет «сохранять» просто неатомным. – dtuckernet

+0

Это будет «присваивать» вместо «сохранить», если вы хотите быть конкретным. – deanWombourne

0

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

+0

Если я использую NSInteger, как это сделать для моего метода: self.listArray = [dbAccess getAllProductsByCategy: number]; Несовместимый указатель на целочисленное преобразование – Maurizio

+0

'NSNumber * myNumber = [NSNumber numberWithNSInteger: number];' – OdNairy

0

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

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

NSInteger *number; 

Написать

NSInteger number; 
Смежные вопросы