@property declaration 属性
为实例变量指定属性(attributes)的途径, 可让编译好器生成 无泄漏和线程安全的访问实例变量的方法.
@property 就是对应的编译器指令
声明一个与数据成员同名的属性来省去读写函数的声明
@interface Application
{ unsigned int root_port;
unsigned int notifier;
UIWindow *window;
MainView *mainView; }
- (void)applicationDidFinishLaunching:(id)arg1;
- (void)applicationWillSuspend;
- (void)dealloc;
@property(retain) UIView *mainView; // @synthesize mainView;
@property(retain) UIWindow *window; // @synthesize window;
@end
声明property的语法为:
@property (参数) 类型 名字;
这里的参数主要分为三类:
读写属性: (readwrite/readonly)
setter语意:(assign/retain/copy)
原子性: (atomicity(nonatomic)
assign/retain/copy 决定了以何种方式对数据成员赋予新值
atomicity的默认值是atomic,读取函数为原子操作。
经常用到的参数是 copy/reain/assign。
在其中选择一个来确定属性的setter如何处理这个属性。很多Objective-C中的object最好使用用retain,一些特别的object(例如:string)使用copy。
assign关键字代表setter直接赋值,而不是复制或者保留它。这种机制非常适合一些基本类型,比如NSInteger和CGFloat,或者你并不直接拥有的类型,比如delegates。
readonly关键字代表setter不会被生成, 所以它不可以和 copy/retain/assign组合使用。
在实现里,只需要
@synthesize mainView;
@synthesize window;
就可代替 繁琐的setter, getter方法, 这样就 可让编译器自动生成读写函数,定义了property, 使用者,可以 点号(.) 来存取属性了。
copy与retain的区别:
Copy其实是建立了一个相同的对象,而retain不是:
比如一个NSString对象,地址为0×1111,内容为@”STR”
Copy到另外一个NSString之后,地址为0×2222,内容相同,新的对象retain为1,旧有对象没有变化
retain到另外一个NSString之后,地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的retain值+1
也就是说,retain是指针拷贝,copy是内容拷贝。
分享到:
相关推荐
主要介绍了Objective-C中@property属性的用法,包括@property的属性关键字的整理,需要的朋友可以参考下
Objective-C中的一个简单的模板渲染器。 用对象属性,方法和填充模板。 用法 给定 @interface MYObject : NSObject @property ( nonatomic , copy ) NSString *color; @property ( nonatomic , copy ) NSNumber *...
用于获取 Objective-C 类的所有实例变量及其对应类型的代码(使用 Objective-C 运行时) 它还支持超级类用法要运行示例项目, pod install克隆 repo,然后从 Example 目录运行pod install 。安装ClassProperty 可...
我们熟悉的Objective-C特性在Swift中如何展现。 从Objective-C到Swift的进步改进。研究对比Swift在安全性,易用性上的提升,给我们带来的新编程范式。 目录: 1.属性(property)和实例变量(instance variable) ###...
由于本人在项目中会用到这部分功能,做下记录! JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC…..举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现。 OC...
它基于但通过可控制的界面提供了更灵活的属性。 BLCircularProgress允许用户通过触摸本机更新进度。 可以选择(3 * 7 +1)个动画方法来更新当前进度。 Swift版本: 特性 @property (nonatomic) CGFloat ...
一个 JSON 转 Model 属性代码的 Mac 小工具,目前支持 Objective-C,Swift class, Swift struct 。【点击直接下载,建议直接编译源码马上体验最新更全功能 】。当前功能 JSON -> Model 属性代码 添加注释占位 属性...
我在创建创建了Property Mapper , 是一个简单的自包含解决方案,它使您可以指定接收到的数据与应用程序中具有的数据表示之间的映射,以及一些其他功能,例如类型装箱,验证。 我不喜欢传递JSON,所以我在诸如...
iosStudy1_UIViewExample UIView UIImageView ViewController2_ProtocolDelegateExample @协议委托模式@property弱属性(保留周期问题)3_TableViewExample UITableView UITableViewCell UITableViewDataSource ...
我们可以把Block当做Objective-C的匿名函数。Block允许开发者在两个对象之间将任意的语句当做数据进行传递,往往这要比引用定义在别处的函数直观。另外,block的实现具有封闭性(closure),而又能够很容易获取上下文...
NSCoding协议有两个方法,encodeWithCoder方法对对象的属性数据做编码处理,initWithCoder解码归档数据来初始化对象。 示例1 .h头文件 #import @interface user : NSObject @property(nonatomic,retain)...
Objective-C属性应采用@property (attributes) type name;的样式@property (attributes) type name; Objective-C方法的样式应为- (type)methodName:(type)variableName parameter:(type)name; Objective-C泛型应...
VD属性 提取属性的声明的属性 进口 pod 'VDProperty', '~> 1.0.0' 用法 # import " NSObject+VDProperty.h " NSArray *properties = [[ self class ] vd_properties ]; 有 @property (nonatomic, copy) NSString *...
在实际的项目中,IPhone应用程序会存在很多与服务器之间的数据交互的地方,XML是首选方案。 此包可以解决XML文件的解析、对象转化为XML字符串的问题。 1 通过调用解析类,可以将XML的DATA数据转换为XmlNode对象,...
模型属性*/ @property (nonatomic, copy) NSString * city; @property (nonatomic, copy) NSString * content; @property (nonatomic, copy) NSString * create_time; @property (nonatomic, copy) NSString * ...
是Objective-C的依赖项管理器,它可以自动化并简化在项目中使用诸如AFNetworking之类的第三方库的过程。 播客文件 platform :ios , '7.0' pod "BDCamera" , "~> 0.1" 默认安装 将BDCamera文件夹拖到您的项目中。 该...
XBUserDefaultsXBUserDefaults是利用Objective-C RunTime 机制对NSUserDefaults进行一层封装。...实现思路数据存取将@property属性设置为@dynamic,然后利用消息机制在 +(BOOL)resolveInstanceMethod:(SEL)sel方法中
血魔法 Objective-C是一种功能强大的语言,但有时缺少自定义属性的属性,例如: @property (nonatomic, strong, lazy) ProgressViewService *progressView;@property (nonatomic, strong, partial) HeaderView *...
ZPCusCount//textfeild 是否允许手动输入(默认NO)@property (nonatomic,assign) BOOL isSupport;//控件圆角@property (nonatomic,assign) NSInteger viewCornerRadius;//设置左右加减按钮的宽度(默认是等于整个控件...