这两者之间是否存在差异,哪一个可能更好或更快,或者之间有任何优势:
UIAlertView * alertBox = [[UIAlertView alloc] initWithTitle:@"Title"];
和
UIAlertView * alertBox = [[UIAlertView alloc] init];
alertBox.title = @"Title";
(当然,它们都显示相同的结果!)
答案 0 :(得分:3)
性能没有真正的区别,一个是在初始化时设置标题,这实际上只是调用自定义初始化方法中的代码行alertBox.title
。他们拥有.title
属性的原因是您可以更改。
所以这段代码:
UIAlertView * alertBox = [[UIAlertView alloc] initWithTitle:@"Title"];
对这段代码会更好:
UIAlertView * alertBox = [[UIAlertView alloc] init];
alertBox.title = @"Title";
真的是因为行数,但你可以使用这段代码:
alertBox.title = @"New Title";
稍后改变它
如果速度有差异,你需要一个普朗克计算器来测量它:) - 那里有一些好的夸张,但基本上没有
对于内存,没有区别,因为你正在初始化一个对象并在两种情况下设置它的title
参数,只是单独的方式。想想第一个,作为你编写它的一种较短的方式,但实际的类基本上会做同样的事情。
使用constructer自定义初始化方法对您的时间和行数更有效,但除此之外别无其他 - 我的判决
哪一个更有优势?也没有,因为你正在使用警报视图,我讨厌它们!
答案 1 :(得分:3)
前者可能稍快一些,但是如果你正在优化这样的事情,你就犯了一个错误。显示警报是您不经常进行的事情,之后会立即等待用户做出响应。剃掉几微秒没有任何好处,它将使应用程序的运行方式完全没有可感知的差异。使用哪个更清晰,您可以作为开发人员阅读。
答案 2 :(得分:2)
UIAlertView * alertBox = [[UIAlertView alloc] initWithTitle:@"Title"];
使用与构造函数类似的init方法,该方法在内部调用.title
方法。
UIAlertView * alertBox = [[UIAlertView alloc] init];
alertBox.title = @"Title";
第一个语句创建一个标题为nil的对象alertBox。在第二行,你提供自己的标题。
表现:
第二个将创建另一个堆栈来执行第二个语句,因此两个额外的CPU处理push和pop。第一个会更快,但多核处理器和呼叫时间真的可以协商。
答案 3 :(得分:1)
第一行只是用于编写的代码较少,两者都做同样的事情,并且是UIAlertView的构造函数。在我看来,从第一行开始构造函数更容易,因为它只是在一行而不是通过并在以后添加每个属性。