菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
85
0

oc4--方法

原创
05/13 14:22
阅读数 94958
//  main.m
//  第一个OC类-方法2
#import <Foundation/Foundation.h>

// 1.编写类的声明
@interface Iphone : NSObject
{
@public
    float _model;
    int _cpu;
    double _size;
    int _color;
}
// 注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;因为OC方法中的()有特殊的用途, OC方法中的()是用来扩住数据类型的
- (void)about;
// 有返回值没有参数的, 读取短信
- (char *)loadMessage;
// 有返回值有参数的, 打电话
// int signal(int number);
// 注意: 当前这个有参数的方法它的方法名称是  signal: ,有没有冒号是2个方法,冒号也是方法名称的一部分
- (int)signal:(int)number;
- (int)signal;
// 有返回值并且有多个参数的, 发短信
// int sendMessage(int number, char *content);
// 下面这个方法的方法名称是 sendMessage::
- (int)sendMessage:(int)number :(char *)content;
// 为了提高我们的阅读性, OC方法允许我们给每个参数添加一个标签来说明当前参数的含义,注意: 标签也是方法名的一部分
// 方法名是 sendMessageWithNumber:andContent:   (参数数据类型用括号括起来,参数的数据类型前面加冒号)
- (int)sendMessageWithNumber:(int)number andContent:(char *)content;
@end

// 2.编写类的实现
@implementation Iphone
// 行为的实现
- (void)about
{
    // 对象方法中访问该对象的属性, 直接写_属性名称,因为这里没有对象,
    NSLog(@"型号 = %f, cpu = %i, 尺寸= %f, 颜色 = %i", _model, _cpu, _size, _color);
}
- (char *)loadMessage
{
    char * content = "老婆我们家我做主";
    return content;
//    return "wife is god";  返回字符串是char *,
}
- (int)signal:(int)number
{
    NSLog(@"打电话给%i", number);
    return 1;
}
- (int)sendMessage:(int)number :(char *)content{
    return 1;
}
- (int)sendMessageWithNumber:(int)number andContent:(char *)content
{
    NSLog(@"发短信给%i, 内容是%s", number, content);
    return 1;
}
@end

int main(int argc, const char * argv[]) {
    // 1.通过类创建对象,堆中,栈中内存函数结束是释放,堆中要自己释放。p是堆中字节最小的地址。p称之为Ipone的对象。
    Iphone *p = [Iphone new];
    // 2.修改对象的属性
    p->_size = 3.5;
    p->_color = 0;
    p->_model = 4;
    p->_cpu = 1;
    // 3.获取对象的属性
    NSLog(@"size = %f, color = %i, model = %f, cpu = %i", p->_size, p->_color, p->_model, p->_cpu);
    // 4.如果给对象发消息(如果调用对象的方法)
    [p  about];
    // [对象 消息名称(方法名称)]
    // 注意: OC中的NSLog对C语言的字符串支持不是很好, 如果返回的是中文的C语言字符串可能输出的是乱码, 也有可能什么都不输出
    char *content = [p loadMessage];
    NSLog(@"content = %s", content);
    [p signal:13838338];
    [p sendMessage:1383838333 :"luck"];
    [p sendMessageWithNumber:123456789 andContent:"hi"];
    return 0;
}

 

发表评论

0/200
85 点赞
0 评论
收藏
为你推荐 换一批