黑马程序员——IOS基础(OC基础)



1.#import  导入头文件(只导入一次,但不能解决重复包含的问题)

@autoreleasepool{}代码写在里面,这是一个内存管理关键字


2.打印输出函数NSLog(@“hello world!”);    @开头。NSLog默认有换行。

    打印输出OC的字符串 

    NSString *  str=@“abcdefg”;

    NSLog(@“str=%@”,str);


3.oc创建一个类:

@interface A(类名):NSObject(根类)

{

    int  age;(成员变量)//oc里只能有成员变量,默认是受保护的,也叫类字段。

}

-(void)show;(成员方法)//oc里面只能声明成员方法,不能在类里面实现。

@end

*************前半部分声明,后半部分实现**************

@implementationA

-(void) show

{

   成员方法实现 ,oc里面叫做 消息

    ………………

}

@end


4.OC的对象只能在堆里面开辟空间(除了oc字符串)。

OC调用成员函数的格式 ;

 A  * a=[ A  alloc ];//oc的成员方法默认是共有的;把对象空间的地址赋给对象指针,(把对象的地址赋给了a)

[ a setA:3 ] //给对象赋值;

示例:

//Student.h文件

#import<Foundation/Foundation.h>

@interfaceStudent : NSObject

{

    int num;

    int age;

}

-(void)setStu:(int)_num:(int)_age;

-(void)show;

@end

//Student.m文件

#import"Student.h"

@implementationStudent

-(void)setStu:(int)_num:(int)_age

{

    num=_num;

    age=_age;

}

-(void) show

{

    NSLog(@"num=%3d,age=%d",num,age);

}

@end

 

//main.m文件

#import<Foundation/Foundation.h>

#import"Student.h"//包含头文件

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

{

    @autoreleasepool

    {

        Student *stu=[Student alloc];//实例化对象

        [stu setStu:001 :18];//给对象赋值

        [stu show];//打印输出

    }

    return 0;

}

 

5.声明函数的格式:

无参:

-(返回值类型)函数名   -(void)Stu; void不代表没返回值,而是返回值为void;

有参:

  单参数

-(返回值类型)函数名:(参数类型)参数名; -(void)Stu:( int )_num;

  多参数

-(void)setNum:(int)newNum  andScore:(int)newScore;//函数名setNum; andScore; setNum和andSore是标签;

6.    int score=[stu score];//有返回值函数调用

                                             NSLog(@"score=%d",score);

                                               str->c=2;//共有成员变量也能够用


7.  id 在oc特有类型:范型对象指针 和 void *(通配型指针)类似

 "+" 加方法(类方法)由类名调用,格式:[ 类名  函数名 ] 

   作用:a.创建(开辟)空间   b.单例模式(UI里面)c.一些数学运算(不用创建对象,直接用类名来调用,节省空间)

 "-" 减方法(普通方法、实例方法)调用必须要创建对象,有了对象才能调用

  p.s:用户(程序员)绝大多数是写减方法,系统会用到很多加方法。

 

8.oc的构造函数    

相对于c++ ,oc中的构造函数是伪构造函数,oc的构造函数必须手动去写和手动调用才能对对象进行初始化。

nil  空对象;和c中的NULL类似

self(指针)  当前类的对象和C++中的this指针类似

super   不是指针,只是一个编译器符号,但是起到了指针的作用

-(id)init //无参构造函数;

{

         if(self=[superinit]);//super 当前类的父类

          age=5;    //隐藏着一个self指针;

           return self;

 }

无参构造函数调用//例如:Dog *dog=[[Dog alloc]init];

-(id)initWithAge:(int)_ageandWithWeight:(int)_weight //有参构造函数;

{

       if(self=[super init])//先对继承过来的父类空间进行初始化,如果成功返回空间地址,失败返回nil(所以必须做判断)

             {

                age=_age;//父类初始化成功后再对子类类字段(成员变量)进行初始化;

                 weight=_weight;

                 }

                return self;

}

有参构造函数调用//例如:Dog *dog=[[Dog alloc]initWithAge:5 andWithWeight:10];


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值