在Xcode中做什么@synthesize
和@property
?请用简单的术语提供解释?@property @synthesize
回答
你问简单来说:
@property在 类的头声明属性
@property (nonatomic, retain) NSString *myString;
@synthesize创建是你的setter和 吸你的财产(访问 方法)
没有合成你必须写 自己的setter和getter FPGA实现,像getMyString或 setMyString(利用你的财产的第一 字符)
山姆:只是一个建议:http://www.cocoadevcentral.com/d/learn_objectivec/是一个非常坚实的资源,了解像属性这样的基础知识。
祝你好运!
属性和合成访问器是Objective-C 2.0中的新功能。
当你声明一个@property
时,你声明了一个实例var。然后你访问该方法的属性(即getter和setter)。
如果您有兴趣,还有@dynamic
访问器。
你应该真的在这做你的功课。苹果有这个漂亮的pdf。
你可以把我链接到pdf吗? – 2010-01-09 08:52:58
我为你搜索:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/ObjC。pdf – Eimantas 2010-01-09 08:57:39
欢呼Eimantas – 2010-01-09 09:27:15
默认情况下,我们所有的变量都是私有的,所以我们不能从类中取出。 如果我们想在课堂外使用我们的实例变量。 当你声明一个@property
时,你声明了一个实例var。然后你访问该方法的属性(即getter和setter)。
如果您有兴趣,还有@dynamic
访问器。
想想都Objective-C的魔术只是一个“聪明宏”,像一个“智能#define语句:”如果你注意的是始终在.h文件 @property, @synthesize总是在M档。 所以在后台 @property(无论)NSString * myString;
成为2个方法和一个私有变量的声明;
void set_myString:(NSString *) str;
(NSString*) get_myString;
声明在头文件
让他们做一些事情,当你在 @synthesize的myString键入他们实现加入到M档; 变成类似 void set_myString:(NSString *)str { myString = str; }
(NSString *) get_myString
{
return (myString);
}
但它取决于如果你说“保留”,“强”或“弱” 它要么指针刚刚回归的myString或将在myString的复制到一个新的比这 更聪明对象
因此,所有这些都是由编译器通过阅读您的声明自动完成的。 这是非常有用的,可以节省很多时间
它只是在它自己的类中设置属性的设置器变量名称。 例如让我说我有这个:@property (nonatomic, copy) NSArray* viewControllers;
那么,如果我想访问setter _viewController我不会设置合成变量。 但如果我想通过名称viewController
而不是_viewController
访问viewController变量,我会做@synthesize viewController;
。
如果我想用它作为一个完全不同的名字,我可以这样做@synthesize viewControllers = viewControlololer;
但这只是一个setter。你会注意到[self viewControllers]
只有作品,而不是[self viewControlololer];
所以我不明白为什么每个人都写集属性的“setter和getter”。它根本不会改变getter变量......除非这意味着[self viewController]
意识到viewControlololer
(显然)。
其实属性是隐式或显式合成的。属性是隐式合成的。因此,除非想将变量的名称更改为与_property_name不同的名称,否则不需要使用合成。
还有其他用例,例如如果你不想让实例变量支持你的属性。
通过使用@synthesized指令显式合成属性。
(解答摘自大书呆子牧场指南)
- 1. @property和@synthesize
- 2. 关于@property和@synthesize
- 3. 关于产品@property和@synthesize
- 4. @property @synthesize @dynamic差异在Xcode
- 5. 何时需要@property和@synthesize?
- 6. IOS @property,@synthesize内存泄漏
- 7. Objective-C:@property和@synthesize和内存泄漏
- 8. Objective-C:@property声明没有实现(@synthesize)
- 9. @property和@synthesize和内存错误
- 10. 使用@property和@synthesize时防止泄漏
- 11. @property和@synthesize有什么意义?
- 12. 关于@synthesize [property name]语法的问题
- 13. @property和@synthesize的工作方式如何?
- 14. @property和@synthesize有什么区别?
- 15. @property和@synthesize:为什么这两个?
- 16. 使用@property和@synthesize的任何错误
- 17. 困惑于@property和@synthesize如何在iOS 7中工作
- 18. ARC和实例变量没有@property和@synthesize
- 19. 使用@property和@synthesize时得到不正确的值
- 20. Objective-C中使用的@property和@synthesize是什么?
- 21. @property,@synthesize并释放Objective-C中的对象
- 22. 什么时候你必须在iPhone SDK中使用@property和@synthesize?
- 23. 发布一切你有@property保留@synthesize为?
- 24. 问题有关与@property @synthesize释放对象
- 25. 目的-C:`@synthesize FOOBAR;``与FOOBAR @synthesize = _fooBar;`
- 26. EXC_BAD_ACCESS @synthesize
- 27. 对象 - @synthesize
- 28. @synthesize的方法?
- 29. @synthesize in Objective-c?
- 30. @synthesize羽毛= _feathers?
是的,但我的应用程序没有它运行良好。那么,他们为什么需要? – 2010-01-09 08:45:25
他们不需要*他们只是用于节省时间和避免错误。 – 2010-01-09 08:46:58
在桌面上可以使用手动内存管理,也可以使用垃圾收集器。手动管理工作正常,但使用垃圾收集很有用,节省时间并减少错误。 – Abizern 2011-06-03 01:16:04