- 浏览: 1124356 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (349)
- javascript (28)
- objective-c&cocos2d (46)
- 开发备忘及常用java代码 (46)
- core java7学习笔记 (13)
- Mina (7)
- HTML5 (13)
- 系统集成项目管理工程师学习笔记 (10)
- 数据库系统原理学习笔记 (11)
- C++学习笔记 (10)
- C语言学习笔记 (5)
- 数据结构学习笔记 (4)
- 计算机网络原理学习笔记 (3)
- 计算机组成原理学习笔记 (2)
- 软件工程学习笔记 (6)
- 开发工具 (15)
- OSGI学习 (1)
- 学习笔记 (19)
- oracle (3)
- java tv (1)
- web server (5)
- javafx (1)
- 随笔 (8)
- 梦舞集 (4)
- 工作流 (3)
- 程序错误记录 (6)
- Windows (2)
- Linux (4)
- Git (1)
- 企业管理 (2)
- android (1)
- JVM (17)
- box2dweb (1)
- 操作系统学习笔记 (6)
- 英语学习 (1)
- Windows 8 应用商店 (1)
- Go语言 (1)
- docker (1)
- visualVM源码学习 (0)
- MariaDB (0)
- JAVA7 (2)
- 面向对象存储 (0)
- Hibernate (14)
- Spring (3)
- 项目构建 (0)
- 读源码学JAVA (0)
- mybatis (1)
- spring mvc (2)
- Javassist (0)
最新评论
-
白天看黑夜:
Apache Mina Server 2.0 中文参考手册(带 ...
Mina学习笔记二_基础 -
yjph83:
兄弟,你这个解决方案是什么什么啊?我现在遇到个问题跟你类似的! ...
Tomcat 8.0.11 移动端访问报400错误问题 -
comedsh:
你好,我也想为开源的做点事情,想让 tomcat-redis- ...
利用tomcat-redis-session-manager做session同步时自定义类对象属性保存不上的解决方法 -
bsr1983:
这个应该是浏览器内部设置的,你可以在Android上试一下别的 ...
javascript学习笔记八 -
787250527:
bsr1983 写道该值是浏览器内部的一个变量,只读的,不可修 ...
javascript学习笔记八
转载自:http://www.cnblogs.com/kaixuan/archive/2011/03/02/1969072.html
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属性介绍
我们知道在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,那么访问器只是简单地返回这个值。
发表评论
-
[转]解决 Xcode 删除文件后 missing file 警告
2014-03-19 18:19 1148转自:http://www.oschina.net/ques ... -
CocoStudio简介
2014-03-05 19:19 1422一、概述 1.1.功能简介 CocoS ... -
xcode5预览版下载地址
2013-06-16 09:56 22361.xcode5预览版下载地址 http://adcdo ... -
解决提交应用到AppStore时,提示UUID及UIDevice错误
2013-06-04 03:34 22991.如果使用了Admob,更新到最新版本6.4.2,删除Add ... -
解决Could not instantiate class named NSLayoutConstraint
2013-02-17 10:22 1452点击xib或storyboard文件,在右边的 inspect ... -
objective-c的arc项目中使用不支持arc的依赖库时编译错误的解决
2013-02-06 14:04 1179在Target->build phases->Co ... -
xcode4.6下载地址
2013-02-04 12:08 3108http://adcdownload.apple.com/De ... -
Mac上的DMG与ISO互转
2013-01-14 14:59 12111.把DMG转为ISO hdiutil convert /p ... -
设置ios中DatePicker的日期为中文格式
2012-12-18 18:12 72651.在模拟器中的“设置”-“通用”-“多语言环境”-“语言”设 ... -
Xcode 错误- Could not launch app - No such file or directory Error.
2012-12-14 11:50 1881通常发生在联机调试过程中,新旧工程交替测试 解决方 ... -
UIPickerView控件中自定义显示的字体大小及样式
2012-12-14 00:21 17798通过覆盖如下方法实现 - (UIView *)pickerV ... -
Flurry analytics SDK集成步骤及功能简介
2012-12-13 11:48 15445Flurry analytics SDK集成步骤及功能 ... -
Xcode4中显示“Line Numbers”行号
2012-12-11 10:46 1160Xcode4中显示“Line Numbers”行号 1 ... -
ios代码备忘
2012-12-09 00:23 14601.自定义导航栏返回按钮 self.navigationIt ... -
iOS OpenSource Library Collection
2012-12-07 17:45 1359转自:http://www.cppblog.com/inkcp ... -
ios内置付费IAP校验
2012-12-07 15:50 1620参考链接:http://developer.apple.com ... -
ios应用中集成多盟广告墙
2012-12-06 16:59 35691.下载广告墙SDK最新版 ... -
ios 导航栏、工具栏、tab栏图标大小
2012-12-06 16:50 11342工具栏和导航栏上的图标尺寸应如下所示: 对于iPhoe和iP ... -
【转】Google Admob 广告最佳做法
2012-11-13 15:40 6583转自:https://developers.google.co ... -
【转】Google AdMob 广告 iOS 初级指南
2012-11-13 15:37 1542转自:https://developers.google.co ...
相关推荐
Objective-C 2.0主要引入了轻量级垃圾收集(LLGC)和属性(properties)的改进,使得代码更加简洁易读。此PDF文档可能会详细讲解这些新特性,同时涵盖与CHM文件相同的基础知识,但用中文进行解释,这对于中国开发者...
Objective-C的类定义了对象的行为和属性,而对象是类的实例;继承允许子类继承父类的特性;封装确保数据的安全性;多态则提供了多种不同对象对同一消息的不同响应能力。 "第五讲 继承性"进一步阐述了如何利用继承来...
综上所述,本教程覆盖了Objective-C编程语言的基础知识点,不仅包括语法和结构,还包括与C语言的兼容性、内存管理机制、面向对象编程的核心概念、以及如何在不同操作系统平台上进行开发的介绍。通过这些内容的学习,...
1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,因此,理解C语言的基本语法是必要的。Objective-C添加了消息传递机制、类和协议等面向对象特性。 2. **消息传递**:Objective-C中的对象通过发送消息来...
4. **Objective-C 2.0新特性**:第六版可能会涵盖Objective-C 2.0引入的一些新特性,如垃圾回收、属性(properties)和块(blocks)等,这些都是现代Objective-C编程不可或缺的部分。 5. **内存管理**:Objective-C...
3. **Objective-C语法**:深入解析Objective-C的语法特性,如消息传递、方法定义、属性声明、类别(Category)和协议(Protocol)等,以及如何使用这些特性编写代码。 4. **Foundation框架**:介绍Objective-C开发...
1. **Objective-C基础**:Objective-C是在C语言基础上扩展的,添加了面向对象特性。它的基础包括类、对象、消息传递等概念。类定义了对象的属性和行为,对象则是类的实例。消息传递是Objective-C的核心,通过`...
Objective-C起源于C语言,增加了Smalltalk的面向对象特性,如类、消息传递和动态类型。在本书中,读者将学习如何利用这些特性构建高效、可扩展的应用程序。第6版更新了现代Swift编程语言的背景知识,帮助读者理解...
Objective-C是在C语言的基础上扩展了Smalltalk式的面向对象特性,使得它既有C语言的强大功能,又具备了面向对象编程的灵活性。 在Objective-C中,类是所有对象的基础。类定义了一组属性(实例变量)和方法(函数)...
Objective-C是在C语言的基础上扩展的,因此了解C语言的基本概念是必要的。C语言提供了基本的数据类型(如int、char、float等)、控制流程(如if语句、for循环、while循环)、函数以及指针等概念。在Objective-C中,...
Objective-C运行时系统(Run time)是Objective-C语言的关键组成部分,它允许许多决策在编译时和链接时推迟到运行时进行。这意味着Objective-C不仅仅是依赖编译器,还需要一个运行时系统来执行编译后的代码。运行时...
根据给出的内容,我们可以总结出以下关于Objective-C编程语言的知识点,这些知识点将覆盖从Objective-C的基础知识到高级特性,以及如何在iOS移动开发中使用Objective-C: 1. Objective-C简介 Objective-C是一种面向...
这本书是初学者的理想起点,它详细介绍了Objective-C的基本语法和特性。读者将学习如何定义类,理解消息传递机制,这是Objective-C的核心概念。书中还会涵盖对象生命周期,如初始化和释放,以及如何使用属性和协议来...
附录中还介绍了如何从其他语言过渡到Objective-C。 本书适合各类开发人员阅读。 内容截图 目录: 第1章 启程.1 1.1 预备知识1 1.2 历史背景1 1.3 内容简介2 1.4 小结3 第2章 对C的扩展4 2.1 最简单的...
Objective-C是C语言的超集,它扩展了C语言,加入了面向对象的特性。面向对象编程(OOP)的核心概念包括类、对象、继承、封装和多态。Objective-C通过消息传递机制实现了这些概念,使得代码更加模块化和可维护。 2....
**Objective-C**是一种结合了C语言的基础特性和Smalltalk式消息传递机制的面向对象编程语言。作为C语言的一个超集,Objective-C允许开发者直接使用C语言代码。此外,它还借鉴了C++的一些特性,尽管它并非C++的直接...
Objective-C 是苹果公司为其操作系统 macOS 和 iOS 开发的一种面向对象的编程语言。它在苹果的开发环境中占有核心地位,是创建 macOS 应用程序、iOS 应用程序以及 watchOS 和 tvOS 应用程序的基础。"Learn Objective...
此外,还会涉及Objective-C中的特殊语法,如nil和NULL的区别、实例变量和属性的使用。 2. **类与对象**:Objective-C的核心是类和对象。书中会详细解释如何定义类,创建对象,以及如何通过方法(selector)来实现...
Objective-C是一种面向对象的编程语言,它是C语言的扩展,最初由Brad Cox在20世纪80年代开发,并且广泛应用于Mac OS X和iOS的应用程序开发中。Objective-C在C语言的基础上增加了Smalltalk风格的消息传递机制,允许...