3

这两者之间是否有区别,哪一个可能更好或更快或在以下方面有任何优势:

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

和:

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

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

4

4 回答 4

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

使用类似于构造函数的init方法,内部调用.title方法。

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

第一条语句创建一个标题为 nil 的对象 alertBox。在第二行中,您提供自己的标题。

对于性能:

第二个将创建另一个堆栈来执行第二个语句,因此两个额外的 cpu 处理推送和弹出。第一个会更快,但使用多核处理器,调用时间真的可以协商。

于 2013-01-08T13:45:48.700 回答
2

性能上并没有真正的区别,一个是在初始化时设置标题,实际上只是调用了alertBox.title自定义初始化方法中的那一行代码。他们拥有该.title属性的原因是您可以更改它。

所以这段代码:

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

与此代码相比会更好:

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

只是因为行数,但您可以使用以下代码:

alertBox.title = @"New Title";

以后去改


如果速度有差异,你需要一个普朗克第二个计算器来测量它:) - 那里有一些很好的夸张,但基本上没有

对于内存,没有区别,因为您title在两种情况下都在初始化一个对象并设置它的参数,只是不同的方法。将第一个视为编写它的更短的方式,但实际的类基本上会做同样的事情。

使用构造函数自定义初始化方法对您的时间和行数来说更有效,但没有别的——我的判断


哪个更有优势?也不是,因为您使用的是警报视图,所以我讨厌它们!

于 2013-01-08T13:46:57.687 回答
2

前者可能稍微快一些,但是如果你正在优化这样的东西,你就犯了一个错误。显示警报是您不经常做的事情,之后您会立即等待用户响应。将其缩短几微秒并没有任何好处,它绝对不会应用程序的运行方式产生明显的影响。作为开发人员,请使用对您来说更清晰的内容。

于 2013-01-08T13:49:43.377 回答
0

第一行是你写出来的更少的代码,两者都做同样的事情,并且是 UIAlertView 的构造函数。在我看来,从第一行开始构造构造函数更容易,因为它都在一行中,而不是稍后再添加每个属性。

于 2013-01-08T13:47:27.843 回答