Objective-C:initWithTitle:@“”和alertBox.title = @“”

时间:2013-01-08 13:43:58

标签: objective-c alertview

这两者之间是否存在差异,哪一个可能更好或更快,或者之间有任何优势:

UIAlertView * alertBox = [[UIAlertView alloc] initWithTitle:@"Title"];

UIAlertView * alertBox = [[UIAlertView alloc] init];
alertBox.title = @"Title";

(当然,它们都显示相同的结果!)

4 个答案:

答案 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的构造函数。在我看来,从第一行开始构造函数更容易,因为它只是在一行而不是通过并在以后添加每个属性。