32 заметки с тегом


Позднее Ctrl + ↑

nil, Nil, NULL, NSNull по-русски

Поговорим о Ноле. Тема интересеная, поэтому по-русски.

Ноль в Objective-C представлен в виде четырех частоиспользуемых штук: nil, Nil, NULL и NSNull.

Что это все значит?

  • nil
    это нолевая ссылка на объект. По этому адресу ничего нет.
  • Nil
    это нолевая ссылка на класс. (Классы принято именовать с заглавной.)
  • NULL
    это ноль. Чистый сишный ноль. Собственно, nil и Nil — это синонимы NULL.
  • [NSNull null]
    возвращает нолевой объект. Пустой объект, в нем ничего нет, но он существует, и у него есть адрес. Это синглтон, и у него есть единственный метод класса: + (NSNull *)null;


Что интересно, nil используется, например, в методе [NSArray arrayWithObjects:(id), ..., nil]. Тут ноль означает конец перечисления объектов. А на самом деле, это обычная сишная конструкция va_list, которая выполняется, пока, например, не найдет ноль.

 91   2013   Objective-C

Reverse array

There are no reverse_array () obj-c function, but there is more awesome construction for it:

myNewArray = [[myArray reverseObjectEnumerator] allObjects];

This using objectEnumerator instance method that returns an NSEnumerator object that lets you access each object in the array.

 22   2013   Objective-C

Objective-C round functions

Essentials for this time!

How to round float values? Neither Stack Overflow topic has the full answer.

Generally, to round float-value and get int-value you can use lroundf (). Like this:

long int lroundf (float x);

Look Apple Developer Man for round () details.

By the way, for simple output rounded float, use token: @.0f

Also these functions are useful:

ceil (float x);
floor (float x);

NSNumber, float, double, etc. is also applicable.

Drunk owl.
 87   2013   in English   Objective-C

If not ≠ else if yes

It’s so curious, that this code:

if (![[event objectForKey:@’’state’’] isEqual:@’’ok’’] || ![[inbox objectForKey:@’’status’’] isEqual:@’’done’’]) {
// statement 1

will not run statement 1 like this way:

if ([[event objectForKey:@’’state’’] isEqual:@’’ok’’] || [[inbox objectForKey:@’’status’’] isEqual:@’’done’’]) {
// statement 2
} else {
// statement 1

Yes, I also know why :-)

 22   2013   in English   Objective-C


... remember that the Ref suffix means that it is a pointer.

 11   2013   in English   Objective-C

Drill-down interface

drill down Computing access data which is in a lower level of a hierarchically structured database.

 13   2013   in English   Objective-C


Both View and View controller has any property. Which one should we set?

Follow the Model-View-Controller pattern: talk to the controller and let the controller talk to the view.

 8   2013   in English   Objective-C


Interested objects register to receive a message when a particular notification is posted or when a particular object posts.

 21   2013   in English   Objective-C

Low-memory conditions

To avoid memory leaks, the convention for IBOutlets is to declare them as __weak references.

Is it applicable to iOS 6.0? (Notice that viewDidUnload is deprecated in iOS 6.0.)

 10   2013   in English   Objective-C

The main Function

Once the application object is created, its run loop essentially becomes an infinite loop: the executing thread will never return to main.

 12   2013   in English   Objective-C   печалька


The map view will send messages to its delegate when interesting events happen.

 7   2013   in English   Objective-C
Ранее Ctrl + ↓