Objective-C noob在这里.
为什么这样:
NSString *myString = [NSString alloc]; [myString initWithFormat:@"%f",storedNumber];
导致以下异常 – 仅为抽象类定义的长度.定义 – [NSPlaceholderString length]!
当这工作正常:
NSString * myString = [[NSString alloc] initWithFormat:@“%f”,storedNumber];
我认为后者只是前者的收缩(但我显然是错的,至少根据编译器而言).
解决方法
因为-initWithFormat:返回一个与alloc返回的对象不同的对象,即一个与myString指向的对象不同的对象.这就是你应该总是将alloc与-init耦合的原因….
这种情况在类集群(如NSString)中很常见. alloc返回一个通用字符串对象,然后-initWithFormat:决定NSString的具体子类,解除分配alloc创建的当前对象,从NSString的具体子类创建一个新对象,然后返回这个新对象.