Object-c 类对象方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Object-c 类对象方法相关的知识,希望对你有一定的参考价值。

Object-c 类、对象方法

//

//  main.m

//  firestMethod2

//

//  Created by AleuxQ on 16/3/14.

//  Copyright © 2016 AleuxQ. All rights reserved.

//

 

#import <Foundation/Foundation.h>

 

/*

 事物名称:iphone

 属性:型号、cpu,尺寸,颜色

 行为:打电话 发短信,上网

 */

//1、编写类的申明

 

 

 

 

//#######################################################

//C语言:定义函数分为:声明和实现

void about1();

void about2()  //定义

{

    //实现

    printf("使用C语言打印本机信息\n");

}

//#######################################################

 

 

@interface Iphone :NSObject  //此处NSObject (super class) 是为了让我们的Iphone 类具备创建对象的能力

{

    //Instance variable is protected,只有让类中的属性公开后就可以直接通过一个指向结构体的指针来操作对象中的属性

@public   //公共的,属性公开后其它对象可访问

    int _model;

    int _cpu;

    int _size;

    int _color; //黑或白,用 0 1 表示

}

//OC中定义方法,在类的声明中定义,在 end 之前,(类似C语言中的内部函数,外部函数)- 表示对象方法,只能通过指针调用;+ 表示类方法

 

// 没有返回值没有参数的;

- (void) about; //无返回值,没有形参不需要用(), 国为OC()是特殊用法, 用来括住数据类型,故此 about 方法后面不需要()

 

/*

 C语言函数,同样OC的方法也有这四类:

 没有返回值没有参数的;

 有返回值没有参数的;

 有返回值有参数的;

 没有返回值有参数的

 */

 

//LoadMessage 方法,有返回值没有参数的,读取消息

- (char *)LoadMessage;

 

//有返回值有参数的,打电话功能

//OC中如果方法有参数,那个每个参数的数据类型前必须加上一个 冒号:

- (int)Call:(long int)number;

 

//有多个参数的方法:发短信,给一个手机号发内容为xxxx 的短信

// 此方法的名称为 sendMessage::

- (int)sendMessage:(int)number :(char *)content;

 

//为了提高写代码过程中的阅读性,OC方法允许我们给每个参数添加一个标签 来说明 当前参数的含义,以致在方法所带参数太多情况下,方法调用时候不知道参数意义是什么。。。在参数多的情况下,方法名称可很长,将方法名翻译过来即可明白 方法实现的什么功能

//此时标签也是方法名的一部分,方法名为 sendMessageWithNumber:AndContent:

- (int)sendMessageWithNumber:(long int)number AndContent:(char *)content;

 

- (void)lookWithNumber:(long int)number AndContent:(char *)content;

 

@end

 

//1、编写类的实现,@implementation开头,end 结尾

@implementation Iphone

//行为的实现,类的实现

- (void)about

{

    NSLog(@"使用Object-C 打印本机信息");

    //在对象方法中访问该对象的属性,可直接访问,写上 _对象名 即可,比如:_model,_cpu

    NSLog(@"mode = Iphone %d,cpu = %d,size = %d,color = %d",_model,_cpu,_size,_color);

}

 

 

- (char *)LoadMessage

{

    //返回短信内容

    //    return "我家我做主";  //NSLog C语言支持性不是很好,输出汉字会乱码或空白

    return "Wife is God !";

}

 

- (int)Call:(long int)number

{

    NSLog(@"打电话给%ld",number);

    return 1;

}

 

- (int) sendMessage:(int)number :(char *)content

{

    NSLog(@"%d发短信:%s",number,content);

    return 1;

}

 

- (int)sendMessageWithNumber:(long int)number AndContent:(char *)content

{

    NSLog(@"发内容:%s%ld",content,number);

    return 1;

}

 

//有参数 无返回值 方法:

- (void)lookWithNumber:(long)number AndContent:(char *)content

{

    NSLog(@"look number is %ld,Content is %s",number,content);

}

 

@end

 

 

int main(int argc, const char * argv[]) {

    

    //通过类创建 对象

    Iphone *p = [Iphone new];

    

    // OC中的类其实本质就是一个结构休,所以 p 这个指针其实就是指向了一个结构体

    //获取对象的属性

    NSLog(@"model=%d,cpu=%i,size=%d,color=%i",p->_model,p->_cpu,p->_size,p->_color);//初始值全 0

    //个性对象的属

    /*

    (*p)._color = 5;

    NSLog(@"color=%i",(*p)._color);

    p->_model = 6;  //(*p)._model = 6;  也可以这样调用

    p->_cpu = 2;

    p->_size = 4.7;

    p->_color = 1;

    NSLog(@"model=%d,cpu=%i,size=%d,color=%i",p->_model,p->_cpu,p->_size,p->_color);

    */

    //C 函数调用

    about2();

    

    //OC:给对象发消息:方法的调用

    [p about];

    //[对象  消息(方法名称)],对象方法只能对象调用

    char * content = [p LoadMessage];

    NSLog(@"短信内空为:%s",content);

    

    [p Call:18688888888];

    [p sendMessage:18688888 :"good good study , day day up !"];

    [p sendMessage:11111111 :"Fuck You"];

    

    [p sendMessageWithNumber:18888888888 AndContent:"Good,UP UP UP !"];

    

    [p lookWithNumber:18888888888 AndContent:"Addd"];

    

    // insert code here...

    NSLog(@"This is the End !");

    

    

    return 0;

}

 

输出结果:

2016-03-14 23:50:12.943 firestMethod2[2414:114978] model=0,cpu=0,size=0,color=0

使用C语言打印本机信息

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 使用Object-C 打印本机信息

2016-03-14 23:50:12.944 firestMethod2[2414:114978] mode = Iphone 0,cpu = 0,size = 0,color = 0

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 短信内空为:Wife is God !

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 打电话给18688888888

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 18688888发短信:good good study , day day up !

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 11111111发短信:Fuck You

2016-03-14 23:50:12.944 firestMethod2[2414:114978] 发内容:Good,UP UP UP !18888888888

2016-03-14 23:50:12.944 firestMethod2[2414:114978] look number is 18888888888,Content is Addd

2016-03-14 23:50:12.945 firestMethod2[2414:114978] This is the End !

Program ended with exit code: 0

 

 

 

 

以上是关于Object-c 类对象方法的主要内容,如果未能解决你的问题,请参考以下文章

Object-C 类,对象,运行时,isa 附带类本质的内存图

Object-C基础——类与对象

Object-C类目(Category)

IOS开发基础Object-C(12)—单例模式

Object-C类方法构造函数

反射机制