Z S*_*Z S 3 iphone objective-c
有谁知道以下代码是否有问题:
NSString *addchar = nil;
if (case1)
addChar = [[firstname substringToIndex:1] capitalizedString];
else
addChar = [[fullname substringToIndex:1] capitalizedString];
Run Code Online (Sandbox Code Playgroud)
假设firstname和fullname不为null或为空.初始化NSString对象并将其设置为"nil"会导致一些可能的问题吗?它似乎导致我的应用程序冻结,但仅限于极少数用户,只有那些用户,但它与不同的输入字符串或空字符串没有任何关系.所以我试图找出问题,但我不知道它们之间的区别
NSString *addChar;
Run Code Online (Sandbox Code Playgroud)
和
NSString *addChar = nil;
Run Code Online (Sandbox Code Playgroud)
谢谢.
如果没有nil初始化程序,在某些情况下,您的变量可能会使用垃圾进行初始化(以前在内存空间中都是如此).关于哪些类型的变量(基于范围,静态存储等)是自动初始化的,有一些特定的规则,但我总是发现显式初始化所有变量而不是记忆这些规则更容易.
也就是说,因为你的if语句的两个分支都破坏了addChar的任何先前值,所以不应该存在任何可以看到无效值的情况.但是,显然初始化为nil肯定不会伤害任何东西,如果未来的维护者出现并更改代码路径,您可能会发现初始化程序会为您节省!
| 归档时间: |
|
| 查看次数: |
3132 次 |
| 最近记录: |