目录:
一、方法
1 函数与方法有什么区别?
函数只是一个程序的代码段,与类无关。
方法,类的一部分,代表对象可以干什么,
正常来讲,类必须实例化,方法才可以使用,实例方法,调用方法时,也叫做向对象发送消息。
2 语法格式与函数非常相似,但截然不同,使用方法时,在.h文件中声明,在.m文件中实现。
·无参的方法
-(返回值类型)方法名;
·有1个参数的方法
-(返回值类型)方法名:(参数类型)参数名;
·有多个参数的方法
-(返回值类型)方法名:(参数1类型)参数名1 : (参数2类型)参数名2 :(参数n类型)参数名n ...;
注:":"号也是方法名的一部分
练习:给Student类定义一个方法,分别传人信息,int age、char gender、double salary信息,并输出。
·有多个参数的方法(推荐写法)
-(返回值类型)部分方法名:(参数1类型)参数名1部分方法名2: (参数2类型)参数名2 部分方法名n:(参数n类型)参数名n ...;
部分方法名起到提示作用,并不影响程序的执行。
二、实例变量
1 一个对象会有自己独特的 数据和别的对象不同,这些数据会保存在特殊的变量中,这种变量就叫实例变量。类的每个实例对象都有一份。
2 用一个类,创建出一个对象,那么我们就说这个对象就是此类的实例,一个类可以有很多实例,每一个实例都有
3 实例变量的声明,可以放在.h文件中,也可以放在.m文件中,实例变量默认是私有的,只要当前对象才可以访问。
4 方法也是一样,放在.h中声明,就是公有方法。
方法在.h文件中没有声明,就是私有方法,是不合法的。
练习:给Student类定义实例变量int age、char gender、double salary信息,赋值并输出。定义一个方法printInfo输出所有实例变量的值。
三、属性(点语法)
1 在OC中属性提供了setter和getter方法,本质上属性其实就是方法,而属性的值是由实例变量来保存。
2 属性的本质由三个部分组成:
1)保存属性值的实例变量;
2)setter和getter方法的声明
setter方法:
方法名:set+属性名并首字母大写+:+和属性类型一样的参数,无返回值。
标准写法:-(void)setAge:(int)age;
getter方法:方法名和属性名一样,没有参数,返回值类型和属性类型一样。
标准写法:-(int)age;
3)setter和getter方法的实现
setter方法的实现主要用来给属性赋值 的
getter方法的实现主要用来读取属性值的
练习:(使用属性值赋值)给Student类定义实例变量int age、char gender、double salary信息,赋值并输出。定义一个方法printInfo输出所有实例变量的值。
3 声明式属性
在.h中@property int age;//int属性类型age属性(方法)名,自动生成了setter和getter声明
在.m中@synthesize age = _age;将属性与实例变量关联在一起。
属性的使用:
引用.属性 = 值;=>自动调用setter方法
stu.age = 18;
变量 = 引用.属性;=>自动调用getter方法
int age = stu.age;
4 IOS5.0以后,属性的声明简化了,省去了实例变量。
在.h中@property int age;自动生成实例变量名为_属性名的实例变量。
5 IOS6.0开始,声明式属性又简化,.m文件中的@synthesize age = _age;省略
练习:创建一个point类,有横坐标x,纵坐标y,能显示位置(show方法),创建两个位置并显示。
四、初始化方法(自定义构造方法)
1 初始化方法是实例方法,用来初始化对象的方法,规则:
a 初始化方法都是以init开头的,无参的初始化方法就是init(强制将空间清零),有参的都以"initWith"开头
b 初始化方法的返回值为id类型,代表任意对象,(void*)
c 初始化方法的固定格式
-(id)initWithAge:(int)age{
if (self = [super init]) {
_age = age;
}
return self;
}
super代表类的父类,[super init]是通知父类去做底层的操作。
2 OC中的self既可以用在(-)实例方法中,也可以用在(+)类方法中,self代表着当前方法的调用者
,在实例方法中,self代表着"对象",在类方法中,self代表着"类"。
3 main.m中[[Student alloc] init]与[Student new]是等价的。
4 id类型是一种特殊的指针类型,类似void*,id类型其实就是一个指针变量类型,指向任何对象,在使用前必须类型转换。
作业:(使用初始化)创建一个point类,有横坐标x,纵坐标y,能显示位置(show方法),创建两个位置并显示。
02-OC方法、属性的更多相关文章
-
python进阶02 特殊方法与特殊属性
python进阶02 特殊方法与特殊属性 一.初始化.析构 1.初始化 # python中有很多双下划线开头且以下划线结尾的固定方法,它们会在特定的时机被触发执行,这便是特殊方法 # 在实例化的时候就 ...
-
iOS runtime探究(三): 从runtime開始理解OC的属性property
你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639303 本文主要解说runtime相关知识, ...
-
JS调用OC方法并传值,OC调用JS方法并传值////////////////////////zz
iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码) 最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点 ...
-
[iOS Hybrid实践:UIWebView中Html中用JS调用OC方法,OC执行JS代码]
原理: 1.JS调用OC 每次webview执行跳转时都会被iOS给拦截,执行下面函数获得系统允许. 因此可以根据跳转信息转给系统,执行相应功能,比如打开相册等. // 网页中的每一个请求都会被触发 ...
-
UIWebView中Html中用JS调用OC方法及OC执行JS代码
HTML代码: <html> <head> <title>HTML中用JS调用OC方法</title> <meta http-equiv=&quo ...
-
OC方法和文件编译
OC方法和文件编译 一.OC方法 (一)对象方法 (1)对象方法以-开头如 -(void)xx; (2)对象方法只能又对象来调用 (3)对象方法中可以访问当前对象的成员变量 (4)调用格式 [对象 ...
-
iOS:UITableView 方法 属性
参考:https://developer.apple.com/library/iOS/documentation/UIKit/Reference/UITableView_Class/Reference ...
-
python_way,day8 面向对象【多态、成员--字段 方法 属性、成员修饰符、特殊成员、异常处理、设计模式之单例模式、模块:isinstance、issubclass】
python_way day8 一.面向对象三大特性: 多态 二.面向对象中的成员 字段.方法属性 三.成员修饰符 四.特殊成员 __init__.__doc__.__call__.__setitem ...
-
asp.net中C#对象与方法 属性详解
C#对象与方法 一.相关概念: 1.对象:现实世界中的实体 2. 类:具有相似属性和方法的对象的集合 3.面向对象程序设计的特点:封装 继承 多态 二.类的定义与语法 1.定义类: 修饰符 类名称 ...
-
Touch 方法&;属性 映射工具
Touch 方法&属性 映射工具(0.5 版本) 标签 : github 线上后门与接口调试: 原先需要测试一个接口(如Dubbo.DAO), 或为线上留后门, 需要写大量的Web层(Api. ...
随机推荐
-
Kubernetes系统架构简介
1. 前言 Together we will ensure that Kubernetes is a strong and open container management framework fo ...
-
在配置IIS负载均衡时,引起的一系列问题
问题一: IIS中要上传文件的路径是另一台服务器的地址(如:本机IP是192.168.0.100,文件保存的路径在://192.168.0.101/images/folder),在上传时抛出异常: A ...
-
angular设置title
Javascript框架在处理seo方面存在问题,因为爬虫在检索seo信息的时候会读不了js给其赋的值,导致搜索引擎收录不了或者收录了无效的信息,比如收录的可能是title={{title}}这样的, ...
-
Spark源码分析之Spark Shell(上)
终于开始看Spark源码了,先从最常用的spark-shell脚本开始吧.不要觉得一个启动脚本有什么东东,其实里面还是有很多知识点的.另外,从启动脚本入手,是寻找代码入口最简单的方法,很多开源框架,其 ...
-
使用 PHPStorm + Xdebug 实现断点调试(二)
一.配置 Xdebug 配置 Xdebug 相关参数,在 php.ini 文件中新增如下配置,如果没安装的,请参考<PHP 安装 Xdebug扩展>: [xdebug] xdebug.re ...
-
通俗bandit算法
[原文链接] 选择是一个技术活 著名鸡汤学家沃.滋基硕德曾说过:选择比努力重要. 我们会遇到很多选择的场景.上哪个大学,学什么专业,去哪家公司,中午吃什么,等等.这些事情,都让选择困难症的我们头很大. ...
-
js多个异步请求,按顺序执行next
在js里面,偶尔会遇见需要多个异步按照顺序执行请求,又不想多层嵌套,,这里和promise.all的区别在于,promise或者Jquery里面的$.when 是同时发送多个请求,一起返回,发出去的顺 ...
-
C语言的组成 以及预编译
这么多年过去了,回头再来学习一下C语言,发现很多不一样的感觉 #include <stdio.h> int main(int argc, const char * argv[]) { pr ...
-
jQuery : 有关TypeError: invalid ‘in’ operand obj的错误
参考 lwx2615 的博客 ,网站: http://blog.csdn.net/lwx2615/article/details/9668777 由PHP返回一个json数据 $.ajax({ ur ...
-
Xilinx中解决高扇出的方法
Fanout,即扇出,指模块直接调用的下级模块的个数,如果这个数值过大的话,在FPGA直接表现为net delay较大,不利于时序收敛.因此,在写代码时应尽量避免高扇出的情况.但是,在某些特殊情况下, ...