通过 NSMutableDictionary 释放/保留
@interface SearchViewController : UIViewController<UITableViewDelegate, UITableViewDataSource> {
NSMutableDictionary * results;
}
@property (nonatomic, retain) NSMutableDictionary * results;
和@synthesize结果;在 .m
这段代码会崩溃
NSMutableDictionary * md = [[NSMutableDictionary alloc] init];
results = md;
[md release];
这段代码没问题
NSMutableDictionary * md = [[NSMutableDictionary alloc] init];
results = md;
我很清楚指针没有被保留,但我不知道为什么,我做了什么吗。错了吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你应该使用
这样 md 被保留。
您可以使用点语法访问属性。通过使用点语法将某些内容分配给属性,您可以调用 setter,它会在您的情况下保留该值。如果没有点,您只需将可变字典分配给结果,就不会调用任何 setter。
您可以阅读有关 Apple 的 Objective-C 编程语言中的属性,请查看点语法段落下面的一般用途。
you should use
so md is retained.
You access a property with the dot syntax. By assigning something to a property with the dot syntax you call the setter which retains the value in your case. Without the dot you just assign the mutable dictionary to results, no setter is called.
You can read about properties in Apple's Objective-C Programming Language, look at General Use a bit further below the Dot Syntax paragraph.