• Objective-C( 三、方法的声明与实现)


    OC方法的声明与实现

    oc方法的声明在@interface中 大括号外@end上面

    oc方法的实现在@implementation 中@end上面

    OC方法中,一个参数对应一个冒号

    方法名:

    例  fangFaMing:(冒号也是方法名的一部分)

        -返回值类型  方法名:参数名:(参数类型)参数 参数名:(参数类型)参数 ;

    例  -(int)fangFaMing:sumWithNum1:(int)num1  andNum2:(int)num2;

    易犯错误

     1.只写声明,不写实现

     2.将@end这个结束标记丢了

     3.类的声明或实现都不能写在c的函数中

     4.属性的声明必须写在大括号当中

     5.在声明属性的时候,不能直接赋值

     6.声明与实现不能嵌套

     7.方法的声明只能写在大括号下面,@end上面

     8. '-[Person run]: unrecognized selector sent to instance 0x100109c80'  就是对象没有找到run这个方法

     9.创建一个类的时候一定要写上:NSObject,这样这个类才具有创建对象的能力。

    总结

    @import <Foundation/Foundation.h>

    //类的声明

    @interface Iphone : NSObject//使类就有创建对象的能力

    {

        @public

        int _model;//型号

    }

    //方法分成两种:对象方法和类方法

    //注意对象方法

    //1.对象方法以-开头,2.所有的数据类型都要放在()当中,且只有数据类型要放在()里面3.方法名遵循驼峰原则 4.如果是没有参数的方法,方法名后面什么都不用写 5.如果是有参数的方法,一个参数对应一个:,冒号属于方法名的一部分 6.一般oc当中都会把方法名写的像句子一样,做到见名知意。

    //无参无返回值

    -(void)lookMyPhone;

    //无参有返回值

    -(char *)receiptMessage;

    //有参无返回值

    -(void)sendMessage:(char *)message toPhoneNumber:(char *)number;

    //有参有返回值

    @end

    //类的实现

    @implementation Iphone

    -(void)lookMyPhone{

        NSLog(@"型号是%i",_model);

    }

    -(char *)receiptMessage{

        return "hello";

    }

    -(void)sendMessage:(char *)message toPhoneNumber:(char *)number{

        NSLog(@"你在给%s,发送%s",number,message);

    }

    @end

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

    {

        //oc当中的对象可以作为另一个对象的成员变量。通过谁属于谁来判断,如果放进语境当中,符合人们的习惯,前面的就是后面的成员变量。

        

        //1.开辟存储空间 2.初始化成员变量(整数初始化为零,oc当中的对象作为成员变量时初始化为空(nil)3.返回空间的地址

        Iphone *iphone1 = [Iphone new];

        

        //给成员变量赋值

        iphone1->_model = 2;

        

        //建第二个对象

        Iphone *iphone2 = [Iphone new];

        

        iphone2->_model = 5;

        

        //总结:1.一个类可以有多个对象,对象之间互不影响

        //2.一个对象的成员变量或对象方法,只能通过指针来调用。

        //3.一个对象的成员变量或方法,只能由本类或对象来调用。

        return 0;

    }

  • 相关阅读:
    Makefile的常用技术总结
    NPOI 插入行[转]
    LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别 [转]
    Using Google Public DNS[Google公共DNS服务器]
    软件开发知识[TDD]
    MySQL函数之STRCMP()
    MySQL知识[INSERT语法]
    软件开发知识[ORM]
    软件开发知识[ADO.NET Entity Framework]
    mysql workbench 在模板与数据库间同步
  • 原文地址:https://www.cnblogs.com/1023843587qq/p/4738064.html
Copyright © 2020-2023  润新知