OC中属性及方法
1.声明式属性
a.实例变量
b.声明属性
自动生成setter/getter方法
.h ->@property 属性类型 属性名;
.m ->@synthesize 属性名 = 实例变量名;
c.点语法
2.IOS5中的属性
a.实例变量 省
会自动生成实例变量,实例变量名 等于 _属性名
b.声明属性
@property 属性类型 属性名;
@synthesize 属性名 = 实例变量名;
c.点语法
3.IOS6中的属性
a.实例变量 省
b.声明属性
@property 属性类型 属性名;
@synthesize 属性名 = 实例变量名; 省
c.点语法
总结:
a.实例变量 省
b.声明属性
@property 属性类型 属性名;
@synthesize 属性名 = 实例变量名; 省
c.点语法
4.初始化方法
创建对象的时候,也需要进行初始化操作。
如果进行默认值的初始化,调用无参的初始化方法。
如果进行指定值的初始化,调用有参的初始化方法。
语法规则 :
无参的初始化方法,与生俱来就拥有,可以不用自定义。
-(id)init{
self = [super init];
if(self){
}
return self;
}
有参的初始化方法,只能自定义。
-(id)initWithAge:(int)age andSex:(char)sex{
self = [super init];
if(self){
对属性值的初始化;
}
return self;
}
5.id类型
任意类型指针,与C语言中的void*使用相似。
仅仅指向内存中的对象,并不关注内存中数据类型。
id类型也不能直接使用,如果使用必须做类型转换操作。
类型转换是有风险的,引用类型必须与空间类型相匹配。
id类型只能指向(引用)对象所在的内存区域。
6.super关键字
super关键字代表一个类的父类。
可以在子类中调用父类中的方法,此时使用super关键字。
[super init];真正的初始化操作由父类解决。
7.OC中的方法
方法分为两种:
a.实例方法
实例方法只能通过实例(对象)来调用。
语法规则 :
-(返回值类型)方法名; -符号 代表实例方法
实例方法解决与实例有关的相关操作。(数据信息)
实例方法经常用来处理内存中的数据。
b.类方法
类方法只能通过类来调用。
语法规则 :
+(返回值类型)方法名; +符号 代表类方法。
类方法解决与类信息相关的相关操作。(类代码信息)
类方法经常用来处理与代码相关的操作。(开辟内存空间大小)
作用:分配内存空间时,经常使用类型方法。
8.self关键字
self关键字,不但可以在实例方法中使用,也可以在类方法中使用。
在实例方法中使用self关键字,代表当前实例。
在当前实例中,如果需要调用其它的实例方法。
[self otherMethod];
在类方法中使用self关键字,代表当前类。
在当前类,如果需要调用其它的类方法。
[self otherMethod];
[类 otherMethod];
在类方法中,是不可以调用实例变量,当然也不可以调用实例方法,当然也不可以调用属性。
类方法主要用来创建对象。
9.工厂方法
用来创建对象的。
创建对象更简单。
工厂方法分为:
无参的工厂方法:只会创建一个默认值的对象。
有参的工厂方法:会创建一个指定值的对象。
工厂方法命名:
类方法
方法名:去掉类的前缀,首字母小写。
(+)string;
(+)stringWith… and…;
工厂方法需要自己写。
NSString -> NS前缀(公司名缩写,二、三个字母组成,并大写) String 类名
TRString -> TR(tarena) String类名
HW… -> HW(helloWorld)
OC中属性及方法的更多相关文章
- js中属性和方法的类型和区别
对象的属性:私有属性(var).类属性(静态属性).对象属性(this).原型属性(prototype). 对象的方法: 私有方法(funtion).类方法(静态方法).对象方法(this).原型方法 ...
- Java继承中属性、方法和对象的关系
大家都知道子类继承父类是类型的继承,包括属性和方法!如果子类和父类中的方法签名相同就叫覆盖!如果子类和父类的属性相同,父类就会隐藏自己的属性! 但是如果我用父类和子类所创建的引用指向子类所创建的对象, ...
- 为什么Nhibernate中属性和方法必须Virtual的
如果你曾经用过NHibernate 2.0或者更高的版本,那您一定碰到过下面的错误:NHibernate.InvalidProxyTypeException: The following types ...
- python中类中属性和方法的具体定义方法和使用
1. Python中类中特性分成属性和方法 属性和方法都分为私有和公有的,私有的只可以在本类中使用外部是无法访问的 2. 定义属性(成员变量)的语法格式(公有属性/私有属性) class 类名: de ...
- OC中属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?
此次只做简单说明,不做代码演示! 1> readwrite:同时生成get方法和set方法的声明和实现 2> readonly:只生成get方法的声明和实现 3> assign:se ...
- OC中的私有方法
1.不写在.h文件中 2.不写在.m文件中 一.私有方法: 没有在.h文件当中进行声明的方法在OC中都被称为私有方法 私有方法子类是无法继承到的
- OC中自定义init方法
---恢复内容开始--- 我们知道,在函数中实例化一个对象,大多数会同时进行初始化,如 Person *p =[ [Person alloc]init]; 此时已经进行了初始化,使用init方法,那么 ...
- 网络与多线程---OC中多线程使用方法(一)
小编在此之前,通过一个小例子,简单的形容了一下进程与线程之间的关系,现在网络编程中的多线程说一下!!! *进程的基本概念 每一个进程都是一个应用程序,都有自己独立的内存空间,一般来说一个应用程序存在一 ...
- php中属性和方法的修饰符
<?php class A{ private function do1(){ echo "do1 called"; } protected function do2(){ e ...
随机推荐
- 安装绿色版mysql
#修改my.ini basedir = "D:\tools\mysql-5.7.13-winx64" datadir = "D:\tools\mysql-5.7.13-w ...
- Controller与View之间的数据传递
1)Controller向View传递数据ViewData["message"] = "Hello";//使用ViewData传递数据ViewBag.Time ...
- python基础——使用dict和set
python基础——使用dict和set dict Python内置了字典:dict的支持,dict全称dictionary,在其它语言中也称为map(映射),使用键-值(key-value)存储,具 ...
- JDK JRE 区别
JDK 包含了编译器,比如让.java编译成.classs文件. JRE =Java Runtime Environment j是一些比如一些split函数需要的包,都在里面,基本的运行环境都在JR ...
- phpStorm支持CodeIgniter代码提示/自动完成
下载这个文件phpstorm-ci-ac 或者去github下载解压里面的三个文件到ci根目录下然后找到这三个文件 system\core\Controller.phpsystem\core\Mode ...
- 如何查找MySQL中查询慢的SQL语句
如何查找MySQL中查询慢的SQL语句 更多 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow ...
- MongoDB安装(一)
下载 上MongoDB官网 ,我们发现有32bit和64bit,这个就要看你系统了,不过这里有两点注意: ①:根据业界规则,偶数为“稳定版”(如:1.6.X,1.8.X),奇数为“开发版”(如:1.7 ...
- NGUI全面实践教程(大学霸内部资料)
NGUI全面实践教程(大学霸内部资料) 试读文档下载地址:链接:http://pan.baidu.com/s/1jGosC9g 密码:8jq5 介绍:NGUI全面实践教程(大学霸内部资料)本书是国 ...
- DP ZOJ 3735 Josephina and RPG
题目传送门 题意:告诉你C(m,3)个队伍相互之间的胜率,然后要你依次对战n个AI队伍,首先任选一种队伍,然后战胜一个AI后可以选择替换成AI的队伍,也可以不换,问你最后最大的胜率是多少. 分析:dp ...
- DataGrid排序
DataGrid是ASP.NET中非常重要的一个控件.它能方便的让我们实现编辑.排序功能:但是排序功能默认的是升序(ASC),能不能让DataGrid同时实现升降序排列呢?这篇文章将给你一个比较好的解 ...