2015-07-30 3 views
0

Переменные может вернуться выражением заявления:Variable возвращения выражения заявления или блок

_user = ({ 
    User *user = [[User alloc]init]; 
    user.name = @"Joe"; 
    user.age = 18; 
    user; 
}); 

или блок:

_user = ^{ 
    User *user = [[User alloc]init]; 
    user.name = @"Joe"; 
    user.age = 18; 
    return user; 
}(); 

Каковы преимущества и недостатки между ними?

+0

Выражение '' выражение выполняется в том же процессе. И 'block' будет работать на другом процессе. –

+1

В этом случае блок будет работать в одном потоке, так как он будет немедленно выполнен после его определения. – duncanc4

ответ

0

И как вы вставили сначала переменную, у вас будет некоторое возвращаемое значение, которое заполняет эту объявленную переменную. На вашем втором блоке вы просто запустите блок кода, если вам нужен оператор return, вам понадобится объявить блок, ожидающий блок.

Смежные вопросы