`
lizaochengwen
  • 浏览: 644035 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Objective-C属性介绍

阅读更多
我们知道在Objective-C中,使用@property配合@synthesize可以让编译器自动实现getter/setter方法,使用的时候也很方便,可以直接使用对象.属性的方法调用。
NSString*    name;
NSUInteger    age;

@property(nonatomic,copy)NSString*            name;
@property(assign)NSUInteger                    age;

@synthesize name;
@synthesize age; 
复制代码

那如果我们想要对象.方法的方式来调用一个方法并获取到方法的返回值,那就需要使用@property配合@dynamic了。
@property(readonly)NSString*    firstArrayValue;

@dynamic    firstArrayValue;

- (NSString*)firstArrayValue
{
    return [_array objectAtIndex:0];
}
复制代码

这样就可以使用对象.firstArrayValue来获取到_array数组中的第一个值了,很显然,这种方法并不适用于需要传递参数的方法。

其实使用@dynamic关键字是告诉编译器由我们自己来实现访问方法。
如果使用的是@synthesize,那么这个工作编译器就会帮你实现了。

说明:代码只为示例代码,实际使用时每句代码要放到相应位置的。

===== 最后转载下关于@property(*)括号中的属性内容介绍 =====
readonly
此标记说明属性是只读的,默认的标记是读写,如果你指定了只读,在@implementation中只需要一个读取器。或者如果你使用@synthesize关键字,也是有读取器方法被解析。而且如果你试图使用点操作符为属性赋值,你将得到一个编译错误。

readwrite
此标记说明属性会被当成读写的,这也是默认属性。设置器和读取器都需要在@implementation中实现。如果使用@synthesize关键字,读取器和设置器都会被解析。

assign
此标记说明设置器直接进行赋值,这也是默认值。在使用垃圾收集的应用程序中,如果你要一个属性使用assign,且这个类符合NSCopying协议,你就要明确指出这个标记,而不是简单地使用默认值,否则的话,你将得到一个编译警告。这再次向编译器说明你确实需要赋值,即使它是可拷贝的。

retain
指定retain会在赋值时唤醒传入值的retain消息。此属性只能用于Objective-C对象类型,而不能用于Core Foundation对象。(原因很明显,retain会增加对象的引用计数,而基本数据类型或者Core Foundation对象都没有引用计数——译者注)。

copy
它指出,在赋值时使用传入值的一份拷贝。拷贝工作由copy方法执行,此属性只对那些实行了NSCopying协议的对象类型有效。更深入的讨论,请参考“复制”部分。

nonatomic
指出访问器不是原子操作,而默认地,访问器是原子操作。这也就是说,在多线程环境下,解析的访问器提供一个对属性的安全访问,从获取器得到的返回值或者通过设置器设置的值可以一次完成,即便是别的线程也正在对其进行访问。如果你不指定nonatomic,在自己管理内存的环境中,解析的访问器保留并自动释放返回的值,如果指定了nonatomic,那么访问器只是简单地返回这个值。
分享到:
评论

相关推荐

    Objective-C基础教程 中文 PDF 清晰版 [31M]

    附录中还介绍了如何从其他语言过渡到Objective-C。   本书适合各类开发人员阅读。 内容截图 目录: 第1章 启程.1 1.1 预备知识1 1.2 历史背景1 1.3 内容简介2 1.4 小结3 第2章 对C的扩展4 2.1 最简单的...

    [Objective-c程序设计].杨正洪等.扫描版

    《Objective-C程序设计》(作者杨正洪、郑齐心、李建国)通过大量的实例系统地介绍了Objective-C语言的基本概念、语法规则、框架、类库及开发环境。读者在阅读本书后,可以掌握Objective-C语言的基本内容,并进行...

    Objective-C的语法与Cocoa框架

    3. Objective-C中的布尔类型 4. Objective-C中的null 5. 与C混合编写 6. 对象的初始化 7. Objective-C的description方法 8. Objective-C的异常处理 9. id类型 10. 类的继承 11. 动态判定与选择器 12. 类别Category ...

    objective-c的属性动画实现

    objective-c的属性动画实现

    Objective-C2.0程序设计

    第1部分 Objective-C语言 第2章 Objective-C程序设计 2.1 编译并运行程序 2.1.1 使用Xcode 2.1.2 使用Terminal 2.2 解释第一个程序 2.3 显示变量的值 2.4 小结 2.5 练习 第3章 类、对象和方法 3.1 到底什么是对象 ...

    Objective-C培训资料

    Objective-C Objective-C Objective-C Objective-C 培训教程 主要章节提示: 第 一 章 程序整体语法结构 第 二 章 数据类型 第 三 章 字符串 第 四 章 内存管理 第 五 章 对象的初始化 第 六 章 存取器 第 七 章 ...

    基于Objective-C的FinClip iOS小程序运行环境设计源码

    本设计源码提供了一个基于Objective-C的FinClip iOS小程序运行环境。项目包含56个文件,主要使用Objective-C编程语言,并包含了MATLAB和C。文件类型包括19个PNG图片文件、11个M文件、10个H头文件、3个JSON配置文件、...

    iOS应用开发之objective-C视频讲解(全套)

    资源名称:iOS应用开发之Objective-C视频讲解(全套)   资源目录: 【】1.ios预科班_oc_helloword以及数据类型 【】2.ios预科班_oc_数据类型转换以及类方法变量属性 【】3.ios预科班_oc_内存...

    Google Objective-C Style Guide 中文版

    Google Objective-C Style Guide 中文版 目录 例子 空格与格式 空格与制表符 行宽 方法声明与定义 方法调用 @public与@private 异常 协议 命名 文件名 Objective-C++ 类名 分类名 Objective-C方法名 变量名 注释 ...

    IOS之弹窗 - Swift4.2/Objective-C版本(Swift、Objective-C版本别分实现了不同的功能!

    2、Objective-C类需要继承弹窗基类时必须选择该库的Objective-C版本中的基类; 3、两个库可以同时存在一个项目中,建议两个库同时使用。 ``` ## 温馨提示: ```温馨提示 1、同一窗口内目前只支持弹窗一个弹窗,...

    word源码java-ocprjs:这是一个基于Objective-C语言的基础案例集。旨在用于给初学者快速了解Objective-C语言的语

    这是一个基于Objective-C语言的基础案例集。旨在用于给初学者快速了解Objective-C语言的语法。 注:以下将Objective-C简称OC XCode Objective-C git github 问答 Objective-C干什么用? 主要是用于IOS设备和MACOS...

    Objective-C学习笔记(一)OC基础.md

    1. Objective-C概述,介绍了Objective-C的来源、发展历史和作为面向对象的C语言的特点。 2. 第一个OC程序,讲解了如何创建一个OC项目,解释了一些OC程序中的关键字和语法。 3. OC基础语法,对比了OC和C语言的一些区别...

    Object-C语言教程&

    Objective-C 通过提供类定义,方法以及属性的语法,还有其他可以提高类的动态扩展能力的结构等,扩展了标准的 ANSI C 语言。类的语法和设计主要是基于 Smalltalk,最早的面向对象编程语言之一。 如果你以前使用过...

    Objective-C培训教程

    主要章节提示: 第 一 章 程序整体语法结构 第二章 数据类型 第三章 字符串 第四章 内存管理 第五章 对象的初始化 第...第 八 章 动态绑定和id类型 第九章 分类和协议 第十章 属性列表 第十一章 复制对象 第十二章 归档

    基于objective-c将JSON格式化输出为模型的属性

    基于objective-c将JSON格式化输出为模型的属性

    Using Swift with Cocoa and Objective-C完整中文CocoaChina精校版

    Objective Objective Objective Objective-C选择器 选择器 (Selectors)(Selectors)(Selectors) (Selectors)(Selectors)(Selectors)(Selectors) 15 2.2. 2.2. 使用 Objective Objective Objective Objective-C特性...

    Objective-C 2.0的新特性与运行时编程

    2. Objective-C 2.0的新特性: (1.)属性访问器 (2.)for-each循环 (3.)GC机制 (4.)协议的必选与可选方法 3. Objective-C 2.0的运行时编程: (1.)isa指针 (2.)SEL 与IMP (3.)objc_msgSend函数 (4.)动态方法解析 (5.)...

    Swift-Study:Swift学习:从Objective-C到Swift

    #Swift学习: 从Objective-C到Swift 这篇文章是自己学习Swift的笔记与深化。希望这篇文章能够帮助已经有Objective-C经验的开发者更快地学习Swift。同时也品味到Swift的精妙之处。 结论放在开头: 我认为Swift比...

Global site tag (gtag.js) - Google Analytics