OC之类方法

#import<Foundation/Foundation.h>

/*

 1、对象方法

 (1)减号- 开头

 (2)只能由对象来调用

 (3)对象方法中能访问当前对象的成员变量(实例变量)

2、类方法

 (1)加号+ 开头

 (2)只能由类(名)来调用

 (3)类方法中不能访问成员变量(实例变量)

 

 3、类方法的好处和使用场合

 (1)不依赖于对象,执行效率高

 (2)能用类方法,尽量用类方法

 (3)场合:当方法内部不需要使用到成员变量时,就可以改为类方法

 

 可以允许类方法和对象方法同名

 */

@interfacePerson : NSObject

{

    int age;

}

// 类方法都是以+开头

+(void)printClassName;

 

-(void)test;

+(void)test;

@end

 

@implementationPerson

+(void)printClassName

{

    // error:instancevariable 'age' accessed in class method

    // 实例变量age不能在类方法中访问

    //NSLog(@"这个类叫做Person-%d",age);

}

-(void)test

{

    NSLog(@"111-%d", age);

    //[Person test];

}

 

+(void)test

{

    // 会引发死循环

    //[Person test];

        NSLog(@"333");

   

// 会引发死循环

// [Person test];

}

@end

 

 

intmain()

{

    //[PersonprintClassName];//直接用类名调用类方法

    [Person test];

    //Person *p =[Person new];

    //[p test];

        /*

     -[Person printClassName]: unrecognizedselector sent to instance 0x7fa520c0b370

     */

    // 系统会认为现在调用的printClassName是个对象方法

    //[p printClassName];

        return 0;

}

【备注】不能使用指针去访问类方法,会报错。类方法和成员(对象)方法可以同名。

时间: 2024-10-01 18:41:41

OC之类方法的相关文章

oc NSString 方法中 替换方法

问题描述 oc NSString 方法中 替换方法 oc NSString 方法中 NSString *string = @"This is a const string"; NSString *string11 = [string stringByReplacingOccurrencesOfString:@"is" withString:@"are"]; 这个将is全部替换,如何选择性替换is,比如第二个is 解决方案 http://blog.

ios-IOS 如何在C里调用OC对象方法

问题描述 IOS 如何在C里调用OC对象方法 在做一个物联网的东东,接口程序是C语言的,要调用我写的一个类里的蓝牙连接收发方法,然后返回对应的状态值,求教要如何在一个C语言的类里调用OC类的方法,用得xcode6.1 解决方案 在C语言写的代码里,引入OC类需要的类库,然后声明你需要的OC里的类对象就可以了,oc本身就是C的一个超集,是兼容C的

OC基础之方法和参数的命名规范

以前学过C/C++/Java/C#语言的童鞋可能刚开始对于OC的方法和参数的命名规范大为不爽 举例来说,如下一个OC方法: - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 这个方法,如果在传统的C++编程语言中应该是: void tableViewCom

转 OC之OC的类

比如,定义一个类名为Car的类,类的声明(类的声明通常写在头文件中,即.h文件中,也可直接写在.m文件中): // NSobject可以让类有创建对象的能力 @interface Car : NSobject { //声明对象属性 @public   //是成员变量变成共有的,其下所有成员变量都将变成共有的,当然也可以在每个成员变量上都加@public //[备注]实际开发中成员变量应以下划线"_"开头. intspeed;//Car的speed属性(成员变量),只可声明,不可赋值.

内存管理Memory&amp;nbsp;OC——第九天

1.   内存管理方式         垃圾回收机制:(Garbage Collection),有系统管理内存,开发人员需要管理         注:OC从2.0之后就开始支持垃圾回收机制,但是只适用于OS开发,(苹果电脑的操作系统),我们iOS平台是不支持垃圾回收机制:(面试题) 不支持垃圾回收机制,OC是如何管理内存的呢?         //内存不释放 就叫内存泄露 //OC通过引入计数器管理内存 图中那个的行为     OC中操作 OC中方法 根据照明设备所做的动作 对对象的操作 开灯

objective c-OC中有方法重载吗?具体是怎么样?

问题描述 OC中有方法重载吗?具体是怎么样? oc中有方法重载吗?那位大神具体描述下?看了好多都没有描述清楚!还是不知道到底有没有重载 解决方案 Objective-C不支持方法重载. 下列两个方法: (void)doSth:(NSInteger)integer; (void)doSth:(NSString *)str; 对Objective-C而言是一样的,都叫方法doSth: 同时定义实现这两个方法是无法编译通过的. 若要达到类似重载的效果,可以这样跟不同参数: (void)doSth wi

内存管理Memory&amp;amp;nbsp;OC——第九天

1.   内存管理方式        垃圾回收机制:(Garbage Collection),有系统管理内存,开发人员需要管理        注:OC从2.0之后就开始支持垃圾回收机制,但是只适用于OS开发,(苹果电脑的操作系统),我们iOS平台是不支持垃圾回收机制:(面试题) 不支持垃圾回收机制,OC是如何管理内存的呢?        //内存不释放 就叫内存泄露 //OC通过引入计数器管理内存 图中那个的行为     OC中操作 OC中方法 根据照明设备所做的动作 对对象的操作 开灯   生

【《Objective-C基础教程 》笔记ch04】(五)OC中的继承inheritance机制

一.为什么需要继承                            使用继承一方面继承了父类的特性,另一方便解决了重复代码维护问题. 二.继承之语法          1. @interface 子类名:父类名          2. OC只支持单继承,不支持继承多个父类.          3. 重构--移植和优化代码. 三. 继承的工作机制           1. 方法调度               子类拥有一个指向它父类的引用指针,消息传递时,OC的方法调度机制使用该信息来找到正

iOS - OC 与 C 互相操作

前言 在 Objective-C 语言中,我们可以使用 C.Swift 语言编写代码,我们可以导入任意用 C.Swift 写的 Cocoa 平台框架.C 框架或 Swift 类库. 1.在 C 中使用 Objective-C 代码 1.1 在 Objective-C 项目中的 C 函数中使用 Objective-C 代码 1> 在 .m 文件中定义函数指针. static ViewController *selfClass = nil; // 函数指针指向本身 selfClass = self;