在释放的对象上调用方法

Osc*_*Ben 0 cocoa objective-c

我认为我对内存管理缺少一些东西.这是代码:

NSString *string = @"foo";
[string release];
NSLog(@"%@", string);
Run Code Online (Sandbox Code Playgroud)

我期望使用该代码获得内存错误,但代码运行时没有错误.我注意到了这一点,因为我正在关注一本书并且在设置属性和添加子视图之前发布了scrollView(但是在插入主视图之后).

我的问题是,什么时候对象真的被解除分配?这会被认为是好的编码风格吗?

Dav*_*ong 5

这是有效的,因为您的string变量指向已编译到应用程序中的常量字符串. retain它没有任何作用,release它也没有做任何事情.它存在于静态内存中,只有在从内存中卸载程序时才会销毁它.