NSString 初始化

发布于 2024-11-07 09:44:17 字数 388 浏览 2 评论 0原文

这里是 Objective-C 菜鸟。

为什么会这样:

NSString *myString = [NSString alloc];
[myString initWithFormat:@"%f", storedNumber];  

导致以下异常 -length 仅为抽象类定义。定义 -[NSPlaceholderString length]!

当这工作正常时:

NSString *myString = [[NSString alloc] initWithFormat:@"%f",storedNumber];

我认为后者只是前者的缩写(但我显然错了,至少根据编译器来说)。

Objective-C noob here.

Why would this:

NSString *myString = [NSString alloc];
[myString initWithFormat:@"%f", storedNumber];  

results in the following exception -length only defined for abstract class. Define -[NSPlaceholderString length]!

When this works just fine:

NSString *myString = [[NSString alloc] initWithFormat:@"%f", storedNumber];

I would think that the latter is merely a contraction of the former (but I'm obviously wrong, at least according to the compiler).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

老旧海报 2024-11-14 09:44:17

因为 -initWithFormat: 返回的对象与 +alloc 返回的对象不同,即与 myString 指向的对象不同>。这就是为什么您应该始终将 +alloc-init... 结合起来的原因。

这种情况在NSString等类集群中很常见。 +alloc 返回一个通用字符串对象,然后 -initWithFormat: 决定 NSString 的具体子类,释放由 创建的当前对象+alloc,从 NSString 的具体子类创建一个新对象,然后返回这个新对象。

Because -initWithFormat: is returning an object that’s different from the one returned by +alloc, i.e., an object that’s different from the one pointed by myString. That’s the reason why you should always couple +alloc with -init….

This situation is common in class clusters such as NSString. +alloc returns a generic string object, then -initWithFormat: decides upon a concrete subclass of NSString, deallocates the current object created by +alloc, creates a new object from a concrete subclass of NSString, and then returns this new object.

心如荒岛 2024-11-14 09:44:17
NSString *myString = [[NSString alloc] init];

或者

NSString *myString = [NSString new];
NSString *myString = [[NSString alloc] init];

or

NSString *myString = [NSString new];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文