【发布时间】:2010-07-29 10:20:02
【问题描述】:
关于 iOS 的属性和内存管理,我似乎不了解一些东西!
在我的AppDelegate 中,我想要一个NSString * 属性:
-
我已经在
.h文件中这样声明它:@property(非原子,复制)NSString *myString;
并在
.m中合成。
我的一个方法使用这样的属性:
myString = [notificationDictionary objectForKey:@"myKey"];
(notificationDictionary 是NSDictionary* 我在application:didFinishLaunchingWithOptions: 的launchOptions 字典中使用键UIApplicationLaunchOptionsRemoteNotificationKey)
我认为这意味着我的 AppDelegate 拥有自己的 myString 副本,保留计数为 1,对吧?
然后另一个方法尝试访问该属性,但我得到一个EXC_BAD_ACCESS 异常。
为了 100% 确定发生了什么,我已多次保留我的财产,并在每次访问时显示其保留计数的值:保留计数在我为我的赋值的方法之间的某个位置递减属性和我阅读它的方法。
哪个对象将释放方法发送到我的字符串?
【问题讨论】:
标签: objective-c memory-management properties variable-assignment