我使用下面的代码设置NSString
#import <Foundation/Foundation.h>
@interface AppController : NSObject
{
NSString *myString;
}
@property (nonatomic, retain) NSString *myString;
@end
#import "AppController.h"
@implementation AppController
@synthesize myString;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSString *zs0= [[NSString alloc] initWithFormat: @"abc"];
myString =[zs0 retain];
[zs0 release];//breakpoint
}
- (void)dealloc {
[myString release];
[super dealloc];
}
@end
当我在断点处检查myString的值时 它总是说“超出范围”
欢迎任何评论
答案 0 :(得分:0)
如果你没有使用格式,为什么要使用initWithFormat?接下来,如果你不打算使用它,为什么还要分配zs0?只需将myString设置为您想要的结果即可。 因此,您的代码应如下所示:
myString = [[NSString alloc] initWithString: @"abc"];
尝试一下,一切都应该有效。
答案 1 :(得分:0)
一种简单的方法是:
self.myString = [NSString stringWithString:@"abc"];
这将创建一个自动释放的字符串(不是使用alloc创建,按惯例复制),然后属性将保留它。