iOS,这个符号({…其中的某物…})是什么意思?

iOS,这个符号({…其中的某物…})是什么意思?,ios,objective-c,ios7,Ios,Objective C,Ios7,我是一个新的iOS开发者 今天,我面对一个({})符号 问题 这是什么意思? 我为什么需要这个? 我可以不用它吗 请参阅下面的代码: @property (strong, nonatomic) UITableView *myTableView; _myTableView = ({ UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrou

我是一个新的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;}
那么这里的({})是什么意思呢?我认为它与上面的模式不匹配。

Q1。 当某个方法/函数接受块并希望传递使用的空块({})时,nil当然也会起作用,但并非总是这样,如果接受块参数的函数/方法在执行它之前未检查它是否为nil,则应用程序将崩溃,某些方法(如uiviewanimation)正在检查是否提供了一个块,而不是nil,然后才执行块,但正如我所说的,并不是所有函数/方法(第三方)都要检查

问题2。 如果在块中直接使用self,此块将保留“self”对象,这意味着即使不再使用“self”,也需要解除分配(例如,它是一个UIViewController,您将其解除/关闭),它仍然保留在块中,在该块执行或释放之前,它不会允许它释放/解除锁定


你可以在

上了解更多“两个问题就是两个问题”的哪一部分你不明白吗?@AshishKakkad如果我这样使用它,会发生什么?@musefan我不明白为什么我可以将一个像({})这样的东西包在里面的东西传递给UITableView,而不是我的意思。我的意思是,如果你有两个问题,那么你应该把它们作为两个独立的问题发布在堆栈溢出上。不要创建一个问题来将所有问题分组。非常抱歉。下次我会把它们分开,但这里的问题2已经得到了回答。我能做些什么来修复它呢?非常感谢您提出的问题2,但对于问题1,为什么我可以将块传递给UITableView?因为它像对象一样“包装”,像“id”,所以传递给UITableView的是({})中的tableView?我真的很好奇为什么我们需要这种代码风格。我们可以只使用[u myTableView=[[UITableView alloc]initWithFrame:self.view.bounds style:uitableViewStyleGroup]吗;会有什么不同吗?我不明白你的问题,这只是一个代码块,它不会返回tableView,请看一看我已经观看了youtube视频,但是如果这里到_maTableView的({…})传递是一个块,那么^符号在哪里?我可以定义不带“^”的块吗?