objective-c - 声明 Objective C 对象时哪个更有效

标签 objective-c oop object

标题中我使用了 Objective C,但这个问题对于其他 OOP 语言也是可行的,我的问题是:下面哪个声明(示例)更有效?

1)

NSString        *urlString=@"string_literal_for_URL";
NSURL           *url         =   [NSURL urlWithString:urlString];
NSURLRequest    *request     =   [NSURLRequest requestWithURL:url                  cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                              timeoutInterval:40];
NSURLConnection *connection  =   [[NSURLConnection alloc] initWithRequest:requestFromLogin 
                                                                 delegate:self];

2)

NSURLRequest *requestFromLogin = [NSURLRequest requestWithURL:[NSURL URLWithString[NSString stringWithFormat:@"http://%@:%@/ipad/login.php?username=%@&password=%@",server.text,port.text,username.text,password.text]]  
                                                  cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                              timeoutInterval:40];

[[NSURLConnection alloc] initWithRequest:requestFromLogin delegate:self];

注意:据我记得CS193p Video Lectures iOS 擅长惰性实例化(据我所知,第一个示例更好)但我不确定..任何人都可以从 OOP 的角度给出答案..提前致谢

最佳答案

当使用 ARC 编译代码并关闭优化时,存在细微差别:第一个示例会额外增加和减少对 url 对象的引用计数。然而,当优化打开时,编译器应该能够找出 url 变量除了调用 NSURLRequest 的初始化器之外没有被使用,并优化它.

关于objective-c - 声明 Objective C 对象时哪个更有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11581396/

相关文章:

ios - 在状态栏上方添加 UIView 横幅 iOS 7

ios - NIB 文件中的静态表格单元格

java - java中的getters应该有验证吗?

java - 隐藏类的实例变量

C++根据 parent 的指针删除 child

objective-c - Twitter API 的签名是如何真正起作用的?

objective-c - 子类化 Objective C 类方法

javascript - 无法读取未定义的属性 'undefined',但我确定 var 是有效的

javascript - d3 在追加圆圈时跳过数组中的第一个索引

objective-c - Objective-c 中 osx 上的 PubNub 钥匙串(keychain)