OC基础——第一个OC程序

import和include的区别

  import是include的升级版,可以防止头文件重复包含,记住:以后不管什么时候只要是需要引入头文件,都使用import
  Foundation是一个框架,相当于一个集合,里面包含了很多的头文件。Foundation.h是Foundation框架的主头文件
  主头文件:在主头文件当中包含了框架的其他所有头文件。
Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Foundation.framework/Versions/C/Headers
#import <Foundation/Foundation.h>

objective-c的入口和c一样,也是main函数

    比较printf与Nslog
      1.名字不同
      2.导入的头文件不同
      3.打印的内容不同
      4.输入参数不同,nslog中,在“”前面需要加@
      5.printf是c的打印函数,nslog是oc当中的打印函数
      6.nslog可以实现自动换行

第一个OC类

三要素:

 1.类名:首字母大写,最好不要有下划线,从第二个单词开始遵循驼峰原则(GoodTeacher)
 2.属性:最好是以下划线开头
 3.行为(方法):方法名出首个单词外,遵循驼峰原则,首个单词的首字母小写
  oc当中创建一个类:类的声明和类的实现(定义)

类的声明部分

  构成:>@interface  类名
       >@end (end代表了类的声明部分的结束)
  写类的属性(成员变量)和行为的声明
  过枚举定义手机的颜色
typedef enum{
     ColorWithBlack,//黑色
     ColorWithWhite,//白色
     ColorWithTuhaojin//土豪金
}Color;

@interface Phone : NSObject//类的声明部分必须有:NSObject,它才称之为一个类
  类的属性的声明{
    @public//想在类的外部调用内部的成员变量
    //类的属性必须要写在大括号当中
    //会将他们都初始化为零
    int _cpu;//手机的处理器
    Color _color;//手机的颜色
}

类的行为的声明

//必须写在大括号外面,@end的前面
//类的方法:类方法,对象方法
//主要研究对象方法
//无参无返回值的声明
void test();

  要求:1.方法要以-开头,
              2.必须将数据类型放在小括号里面,且只能将数据类型放在里面
              3.方法的声明部分写在大括号外面,@end的前面
              4.方法名出首个单词外,遵循驼峰原则,首个单词的首字母小写
              5.当方法没有参数的时候,方法名后面什么都不用写
-(void) test1;
//无参有返回值
-(char *)receiptMessage; //接收信息
//有一个参数无返回值的方法
void callPhone(char * number);
//注意点:1.无参无返回值方法的注意点全盘接受,
                             2.有一个参数就有一个:(冒号),冒号紧跟在参数的前面
                             3.冒号是方法名的一部分,-号不是
-(void)callPhone:(char *)number;

//有几个参数就有几个:
//在每个冒号的前面加一个修饰词,更加清楚的知道方法要表达的意思,想一个句子
-(void)sendMessage:(char *)message :(char *)number;
-(void)sendMessage:(char *)message withNumber:(char *)number;
@end

类的实现部分

//构成:>@implementation 类名
//     >@end
//作用:将声明部分声明的行为(方法)进行具体的实现
@implementation Phone
//方法的实现

-(void)test1{
    NSLog(@"这是Phone类");
}

@end
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]){
    @autoreleasepool {
    //在oc中当想让类执行某个行为的时候,这样写[类名/对象 方法名称] [方法的调用者  方法名称]
    //当用类名去调用的方法叫类方法
    //当用对象调用的方法叫对象方法
    //[Phone new];
    /*
     1.开辟了一块存储空间
     2.给成员变量(在类的声明当中的大括号里面的变量,也叫实例变量)进行初始化
     3.返回内存空间的地址
     */
        //创建一个对象
        Phone *p = [Phone new];    //通过一个Phone类型的指针保存Phone类型对象的地址,oc当中我们通常把这个指针叫做对象
                //p是局部变量,在栈区
        p->_color = ColorWithWhite;
        p->_cpu = 4;
        //oc中的类在赋值的时候与结构体类似
        //通过new方法创建的对象之间完全是独立的
        //对象方法要由对象来调用
        //isa指针,是每一个类中隐藏的成员变量
        //一个类可以创建很多个对象,对象之间完全独立,他们的属性和行为相同或相似
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值