0

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

4

2 回答 2

1

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

顺便说一句,在 NSString 的情况下,正确的属性类型通常是副本。这样,如果有人传入 NSMutableString(这是有效的——它是一种 NSString),它就不会从你下面改变。

浏览这些链接。希望您能通过这些链接更好地理解 -

Objective-C 101(保留与分配)NSString

NSString 属性:复制还是保留?

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

于 2012-10-01T09:00:29.893 回答
1

本指南很好地解释了这些原则。我自己用过几次作为参考。

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

于 2012-10-01T09:02:52.600 回答