【问题标题】:Objective-C: initWithTitle:@"" and alertBox.title = @""Objective-C: initWithTitle:@"" 和 alertBox.title = @""
【发布时间】:2013-01-08 13:43:57
【问题描述】:

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

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

还有:

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

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

【问题讨论】:

  • 最佳微优化
  • @peko 我没办法,我只是想通过尽可能详细地从一开始就开始优化来防止未来的错误或缓慢。

标签: objective-c alertview


【解决方案1】:

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

所以这段代码:

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

会比这段代码更好:

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

真的只是因为行数,但你可以使用这段代码:

alertBox.title = @"New Title";

以后再改


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

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

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


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

【讨论】:

  • 大声笑警报视图只是一个例子,我正在使用按钮等其他对象(因为我以编程方式编写界面,没有 xib 文件)所以这就是我问这个问题的原因
  • @YassineHoussni 请原谅我的仇恨幽默,这没有任何意义:) 如果答案有帮助,请随时投票和打勾
【解决方案2】:

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

【讨论】:

    【解决方案3】:
    UIAlertView * alertBox = [[UIAlertView alloc] initWithTitle:@"Title"];
    

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

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

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

    为了表现:

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

    【讨论】:

    • 虽然第二组在编译时不会导致更多行吗?我假设它在初始化时默认为“”标题。
    • .title 不是一个方法,它是一个声明的属性。确实,给它赋值就相当于调用了一个setter方法,但是那个setter方法是setTitle:title 将是 getter 方法。
    • @Jim :是的,我同意,我仍在考虑访问标题 setTitle 方法会被调用,不是吗?
    • 也不能保证初始化程序分配给属性。事实上,许多编码标准明确禁止在初始化程序中使用声明的属性。如您所知,它可以简单地分配给支持实例变量,这样效率更高。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多