嵌套语句而不是创建新的一次性对象?

Jos*_*nto 1 cocoa cocoa-touch objective-c

这里有新问题.

我为什么要这样做:

    NSPredicate *pred = [NSPredicate predicateWithFormat:@"(lineNum = %d)", i];
    [request setPredicate:pred];
Run Code Online (Sandbox Code Playgroud)

当我能做到这一点?

    [request setPredicate:[NSPredicate predicateWithFormat:@"(lineNum = %d)", i]];
Run Code Online (Sandbox Code Playgroud)

我找到的每个教科书代码示例都使用第一种方法,但据我所知,第二种方法基本上会做同样的事情,只是看起来更整洁."pred"只被调用一次所以为什么要把它作为一个对象?

das*_*ght 5

这主要与文本书的格式有关:在页面上很难容纳超过一定数量的字符,因为书籍没有滚动条.除此之外,两者是相同的.

在现实生活中这样做的一个原因是你可以pred在打电话之前设置一个断点和检查setPredicate:.

  • 可读性和可调试性(就是一个单词)是关键.我不明白为什么新开发者发布的这么多代码包含5级嵌套方法调用,然后他们想知道为什么它不起作用. (2认同)