Objective-C 基本语法(1)

来源:互联网 发布:中国足球 知乎 编辑:程序博客网 时间:2024/05/16 11:46

1.头文件名称的写法:例如 demo.h
   实现文件的写法(c++中cpp文的写法) demo.m


2.NSLog和printf这两种打印的方式
    NSLog:NSLog(@"我的姓名");    注意:要加上@
    printf:printf("我的姓名");
  相对于printf来说,NSLog更好些,它添加了特性,例如时间戳,日期戳和自动附加换行符;

  @表示引用的字符串应该作为Cocoa的NSString元素来处理  

 只要有@,那么就可以看作是c语言的扩展


3.头文件的声明方式
        #import <Foundation/Foundation.h>   //告诉编译器查看Foundation框架中的Foundation.h头文件
 
        #import "demoClass.h"
 
        @implementation demoClass   // @implementation是一个编译器指令,表明你将为某个类提供代码,注意最后没有分号


4.头文件中成员变量定义的方式
       

@interface demoClass : NSObject//做为接口的存在,NSObject告诉编译器,demoClass这个类是基于NSObject这个(所有类的)超类的,并继承NSObject类定义的所有行为        {            int _id;            int _age;        }


5.关于函数方法
       (1)声明方式
        + 代表这个方法是类的方法,也就是说只能用类名调用
        - 代表这个方法是对象的方法,就是说只能用类的对象来调用
      
       +(方法类型)方法名 : (成员变量的类型)变量名
        例如:
            - (void)demoClass:(int)id andAge:(int)age;
            + (void)demoC:(int)id andAge:(int)age;

        (2)实现  //在实现的时候不用加  类名::   这种标识
            - (void)demoClass:(int)id andAge:(int)age
            {
                //直接赋值
                _id = id;
                _age = age;
            }

        (3)在main函中的 调用 
          

  [demoC demoC:1 andAge:22];//调用的是 +(void)demoC:(int)id andAge:(int)age;   [demoClass *d = [demoClass new];//或 demoClass *d1 = [[demoClass alloc]init];//创建对象的方法              [d demoClass:2 andAge:33];//调用的是 -(void)demoClass:(int)id andAge:(int)age;

 

 

6.set和get方法
       (1)声明
            set方法:
            - (void)setId:(int) id;
            - (void)setAge:(int) age;
          
  get方法:
            - (int)id;   //就是类型名+属性名
            - (int)age;
       (2)实现
            //set方法
            - (void)setId:(int)id
            {
                _id = id;
            }
            - (void)setAge:(int)age
            {
                _age = age;
            }
 
            //get方法
            -(int)id
            {
                return _id;
            }
            -(int)age
            {
                return _age;
            }

        (3)在main函数种调用
           

      demoClass *d = [demoClass new];      [d set_id:3423];   //调用 -(void)setId:(int)id      NSLog(@"id= %d",[d _id]);  //[d _id]调用 -(int)id      [d set_age:555555];  //调用 -(void)setAge:(int)age      NSLog(@"age= %d",[d _age]);  //[d _age]调用 -(int)age 



       关于set和get方法,系统可以自动 生成
       .h 文件中: @property(nonatomic,assign) int _id,_age;
       .m 文件中: @synthesize _id,_age;
       这样系统就会自动生成关于_id和_age的set和get方法


       注意:在main中还有 另外一种调用的方式
                     d._id = 3423;  //相当于[d set_id:3423]
                     NSLog(@"id= %d",d._id);
             

                当d._id 作为左值的时候  调用set方法
                否则调用get方法
 
                方法名必须相同的情况下:如果用了系统自动生成set和get方法,而自己同时也定义了set和get方法,这时候会 调用自己写的,因为自己写的会覆盖系统自动生成的
               

                如果自己写的方法名与系统自动生成的方法名不相同,就会调用系统自动生成的方法名
 
            

7.在一个类内调用类内的其他的方法  [self 方法]
          通过set方法来赋值:(在有参的构造中 调用set方法)
            [self setId:id];
            [self setAge:age];
         
打印方法中
            -(void)print
            {
                NSLog(@"id= %d",_id);
                NSLog(@"age= %d",[self age]);
            }


8.关于字符串的定义
  NSString *_name;
 

  实现系统自动生成set和get方法:
  .h中:  @property(nonatomic,assign) NSString *_name;
  .m中:  @synthesize _name;
 

  main函 数中调用
  [d set_name:@"张三"];//赋值
  NSLog(@"我的名字是:%@",[d _name]);
//打印

 

原创粉丝点击