ios开发 oc 的类方法与对象方法

首先我们先来了解一下什么是类方法与对象方法。

对象方法:

对象是由“-”开头。比如:-(void)Runner;

对象方法顾名思义只能由对象来调用 比如说:

@interface Person : NSObject

(void)Runner;//对象方法

@end;

int main()

{

Person *p=[Person new];//Person是一个类,它创建一个对象p。

[p Runner];//p调用Runner这个方法;

return 0;

{

在对象方法中可以直接访问我们当前对象的成员变量 比如:

@interface dog : NSObject

{

int _age;//成员变量

}

-(void)dogAge;

@end

@implementation dog

-(void)dogAge{

_age=20;//直接访问成员变量;

}

@end

对象方法介绍到这里 。。。。。。

类方法:

类方法是由“+”开头  比如:+(void)Runner;

只能由类来调用: 比如 :

@interface Person : NSObject

+(void)Runner;//对象方法

@end;

int main()

{

[Person Runner];

return 0;

{

类方法不需要使用成员变量;比如求2个数的和:

+ (int)sumN1:(int)n1 andN2:(int)n2;

类方法与对象方法同名:

通过上图可以看到虽然然方法名相同,但是一个是类方法一个是对象方法,也可以运行。

死循环:

@interface Person : NSObject

{

int age;

}

+ (void)test;

@end

//只要在mian方法中调用就是死循环

+ (void)test

{

[Person test];

}

类方法与对象方法可以相互调用:

时间: 2025-01-17 15:29:24

ios开发 oc 的类方法与对象方法的相关文章

OC基础笔记——类方法和对象方法和封装(广州黑马一期)

对象方法: 1.声明和实现方法时候,以 -开头 2.对象方法是隶属于对象,只能通过对象调用 3.对象方法中可以直接访问成员变量,因为对象方法和成员变量都是隶属于该对象的 4.对象方法中可以调用其他对象方法 5.对象方法中也可以调用类方法 类方法: 1.声明和实现的标识符都是 + 2.类方法它是属于类本身的 3.类方法是直接通类名调用的,不能通过对象调用 4.类方法不能访问成员变量,因为成员变量是对象的,不是类的 5.在类方法中不能直接调用对象方法,也就是说不能通过self来调用对象方法 如果你要

OC基础--OC中的类方法和对象方法

PS:个人感觉跟C#的静态方法和非静态方法有点类似,仅仅是有点类似.明杰老师说过不要总跟之前学过的语言做比较,但是个人觉得,比较一下可以加深印象吧.重点是自己真的能够区分开! 一.OC中的对象方法 1.以减号“-”开头 2.只能让对象调用,没有对象,这个方法根本不可能被执行 3.对象方法能访问实例变量(也就是成员变量) 二.OC中的类方法 1.以加号“+”开头 2.只能用类名调用,对象不能调用 3.类方法中不能访问实例变量(也就是成员变量) 4.适用场合:当不需要访问成员变量的时候,尽量用类方法

iOS开发OC基础:OC基础概念总结,OC面向对象的思想

一.什么是OOP: OOP(Object Oriented Programming):面向对象编程 二.面向对象和面向过程的区别: 面向过程编程:分析解决问题的步骤,实现函数,依次使用面向对象编程:分解问题组成的对象,协调对象间的联系和通信,解决问题. 面向过程是以事件为中心,关心的是完成这个事件的详细步骤:面向对象是以事物为中心,关心的是事物应该具备的功能,而完成一个事件只是事物所有功能里面的一个小功能(以过程为中心,以对象为中心) 三.类和对象 对象定义了解决问题的步骤中的行为,不刻意完成一

iOS开发OC基础:OC属性的一些概念和基本使用

一.属性简介 //属性是OC2.0之后新出的一种语法,能让我们快速的生成setter以及getter方法,大大简化代码 二.如何定义一个属性 //@property 属性关键字,用来定义属性 //NSString * 属性的类型 //name 属性的名字. //@property 只是生成的setter以及getter方法的声明.@property NSString *name; 三.属性的使用注意事项//如果在.m文件中我们自己实现了setter以及getter方法,则编译器就不会再帮我们生成

iOS开发OC基础:OC的内存管理

OC内存管理的基础知识 /** //             *  当对一个对象autorelease时,会将该对象放到离它最近的自动释放池,当自动释放池将要销毁时,会对自动释放池中的对象发送release消息,让对象的引用计数减1,(切记,是将对象的引用计数减1,而不是回收空间.) //             */ /** *  如果相对一个对象做copy操作,就必须让该类服从NSCopying协议,并且实现协议中的- (id)copyWithZone:(NSZone *)zone方法 */

IOS开发系列--Objective-C之类和对象

概述 前面已经简单介绍过ObjC的基础知识,让大家对ObjC有个大致的印象,今天将重点解释ObjC面向对象的特性.ObjC相对于C语言多了面向对象特性,但是ObjC又没有其他面向对象语言那么多语法特性,ObjC本身对面向对象进行了精简.当然这并不代表今天的内容就会少,今天的内容还是相当多的: 类定义 成员变量 方法和属性 self关键字 构造方法 description方法 继承 类定义 在C#.Java等其他高级语言中定义一个类是相当简单点的,直接一个关键字class加一对大括号基本就完成了,

iOS开发OC基础:OC中的分类(类目)

//分类,category,(类目) //为没有源代码的类添加方法 //一定要注意,只能添加方法,不能添加实例变量 /** *  分类 类的定义也是分为接口部分和实现部分 接口部分:以@interface开头 + 类名 后跟小括号,小括号内填写的是分类名 @end结束 在@interface 与@end 之间添加方法. */ //分类为原类添加的方法,就相当于原类具有该方法,可以正常调用 因为涉及到几个分类的创建,所以就直接上传代码了,其实代码也不多,只是怕大家在建立分类的时候会混淆,所以直接把

iOS开发OC基础:延展Extension

//延展Extension,是为类扩充私有的方法,以及私有的实例变量,和分类Category相比,延展定义的方法是私有的,而且还可以定义实例变量(私有的). //@interface 开头 + 类名(哪一个类的延展) + 小括号,小括号内填写的是延展名,一般情况下都省略. @end结束 (写在.m文件里) main函数中的完整代码为: #import <Foundation/Foundation.h> #import "Person.h" int main(int argc

iOS开发OC基础:OC中的协议

1.协议是一种为有源代码的类扩充方法的方式. 2.协议只是一系列方法的生命,就相当于一张任务清单,规定了要做的事情,但是具有的实施(也就是实现),是由服从该协议的类来实现.所以协议只有.h文件,并且不可以定义变量 3.协议的定义是以@protocol开头, + 协议的名字 <>(表示服从的协议)服从的协议写在<>之内,多个协议之间通过逗号来进行分隔,父协议中的内容就相当于子协议也具有这些内容,以@end结束. 下面的附件是协议的一个小例子,可以加深大家对协议的理解,看完之后一定要多