objective c保留,赋值,复制getter setters方法

时间:2012-10-01 08:54:59

标签: iphone objective-c

我想看看保留,分配和复制setter和getter方法的代码,任何人都可以指导我一些有用的堆栈溢出帖子或任何其他教程链接。提前和问候                                萨阿德·艾哈迈德

2 个答案:

答案 0 :(得分:1)

您通常需要声明实例变量的所有权。请参阅Objective-C内存管理规则。使用保留属性,您的财产设置者声明拥有新值,并放弃旧值的所有权。使用assign属性,周围的代码必须这样做,这在责任和关注点分离方面同样糟糕。您将使用assign属性的原因是您无法保留该值(例如BOOL或NSRect等非对象类型),或者保留它会导致不必要的副作用。

顺便说一下,在NSString的情况下,正确的属性通常是复制。这样,如果有人传入NSMutableString(它是有效的 - 它是一种NSString),它就无法从你的下方改变。

快来看看这些链接。希望你能更好地理解这些链接 -

Objective-C 101 (retain vs assign) NSString

NSString property: copy or retain?

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/MemoryMgmt.html

答案 1 :(得分:1)

本指南解释了相当不错的原则。我自己用它作了几次参考。

http://blog.ablepear.com/2010/04/objective-c-tuesdays-instance-variables_20.html