我是一位新的iOS开发者。
今天,我遇到了 ({}) 表示法。
这是什么意思?
为什么我需要这个呢?
我可以不使用它吗?
请参阅以下代码:
@property (strong, nonatomic) UITableView *myTableView;
_myTableView = ({
UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
tableView;
});
根据我所学到的,该块就像
int (^myBock)(int) = ^(int num) { return num* value;}
那么这里的({})意味着什么?它无法与我认为的上述模式相匹配。
答案 0 :(得分:0)
Q1。 当某个方法/函数接受块并且你想要传递一个空块时你使用({}),当然nil也可以工作,但并不总是如果带有块参数的函数/方法不检查它不是一个零之前执行它,应用程序将崩溃,一些方法(如uiviewanimation)正在检查你确实提供了一个块而不是nil然后才执行块,但正如我所说的并非所有函数/方法(第三方)都检查它。
Q2。 如果你在一个块中直接使用self,这个块将保留“self”对象,这意味着即使不再使用“self”,也需要取消分配(例如,它是一个UIViewController,你解散/关闭它),它仍然被块保留,并且它不会允许它释放/ dealloc直到该块被执行或自行释放
了解详情