2

我有一个这样声明的 NSString :

。H:

@interface ViewController : UIViewController

{

        NSString * aString;

}
@property(nonatomic,copy)NSString *aString;

.m:

@synthesize aString;

......

aString=[[NSString alloc]init];
aString=@"Hello World";

NSLog(@"%@",aString);//The app crashes here

应用程序因此堆栈跟踪而崩溃:

-[CFString respondsToSelector:]: message sent to deallocated instance
4

1 回答 1

8

删除行:

aString=[[NSString alloc]init];

并为属性设置值:

self.aString=@"Hello World";

Doing:aString=@"Hello World";意味着你正在为实例变量设置值,而不使用属性的访问器方法,那么你负责内存管理,它更复杂。通过以下方式获取值:self.aString也。
PS总是通过属性工作,几乎从不使用实例变量,(只有在dealloc方法中释放ivar,否则如果你不擅长内存管理你总是会遇到问题,但属性会为你做一切)

于 2012-06-15T08:49:30.680 回答