zoukankan      html  css  js  c++  java
  • OC语言(一)

    一.概述
    1.基本上所有关键词@开头
    2.字符串以@开头,如@“Hello”
    3.基本数据类型 char int float double BOOL(YESNO)
    4.空为nil
    5.注释同C语音
    6.屏幕输出 NSLog(@“String”); NSLog(@“age is %i”,27);
    7 C语言.连接是将所有.o文件连接起来
    8.OC语言.m到.o再到.out

    二.第一个OC程序,命令行编译
    1.使用命令touch xx.m创建OC文件,然后使用cc -c xx.m生成.o文件,最后使用cc xx.o生成xx.out,./xx.out即可运行
    2.NSLog自动换行
    3.如果不知道头文件,先编译一下,会提示缺少的头文件
    4.OC使用#import代替#include
       #import的用途:1.同include的用途,拷贝文件内容 2.可以防止文件内容被重复拷贝
    这样可以省去
    #ifndef ABC
    #define ABC
    #endif
    5.如果使用了NSLog函数,则用到了Foundation框架的NSObjCRuntime.h,使用链接指令时不会自动链接OC的框架,因此要自行声明框架的引入使用  cc xx.o -framework Foundation,即可生成a.out
    6.想要包含整个框架,包含主头文件:例如Foundation框架的主头文件为<Foundation/Foundation.h>

    三.多个.m文件的链接

    one.m

    #import "two.h"


    int main(){

        test();

        return 0;

    }


    two.h

    void test();


    two.m

    #import <Foundation/Foundation.h>


    void test(){

        

        NSLog(@"Use test.");

        

    }


    链接:cc one.o two.o -framework Foundation


    C语言程序可以和M文件混用

    cc xx.m xx.c可以编译链接一起来


    四.BOOL类型

    BOOL类型全大写,取值为YES(1)、NO(0)
    BOOL的类型本质 signed char
    #define YES (BOOL)1
    #define NO (BOOL)0

    五.面向对象与面向过程
    Procedure Oriented PO 面向过程
    Object Oriented OO 面向对象
    OOP 面向对象编程

    六.类的设计规范

    1.类名:
    首字母大写,不能有下划线,每个单词的首字母大写(驼峰标识)

    七.类的设计与实现

    1.类的声明:
    用来声明对象的属性和行为
    #import <Foundation/Foundation.h>

    @interface ClassName : NSObject{
    }
    @end 

    2.类的实现:
    @implementation ClassName

    @end

    例如
    @interface Car{
    @public //声明访问权限
    int wheels;
    int speed;
    }
    @end

    @implementation Car

    @end
    注意new出来的是地址,应该用指针
    int main(){
    Car *p = [Car new];
    return 0;
    }

    OC的方法与函数不同,用-号开头,小括号仅用于括住数据类型
    例如下面实现了一个无参方法run

    #import <Foundation/Foundation.h>


    @interface Car : NSObject{

        @public //默认是@protected

        int wheels;

        int speed;

    }


    - (void)run;


    @end



    @implementation Car


    - (void)run{

        NSLog(@"The car is running");

    }


    @end


    int main(){

        

        Car* p = [Car new];

        

        p->wheels = 4;

        p->speed  = 80;

        //消息机制,给指针p所指向的对象发送一条run消息

        [p run];

        return 0;

        

    }


    需要注意的是,方法的调用时用的是指针,实质是消息机制,即给指针所指向的对象发出一条执行相应方法的消息

    注意指针赋值只是把地址拷贝,如p2=p,p2可以改变p所指向的对象

    每个对象内部都有一个isa指针,它指向对象所对应的类,所有对象共用一个方法列表

    没有指针指向的OC对象不会被自动销毁


    成员变量不能写static,不能在定义时初始化。


    如果类的定义在main之后,要先声明。


    八.OC函数与方法的区别

    方法开头写-,类型用( ),其余不用( ).
    方法一定要写在@implementation与@end之间,函数写在哪里都可以,写在关键词之间也没问题。
    方法依赖于对象存在,而函数是独立的。

    九.类的合理设计

    枚举类型的值应该以枚举名称开头,可以用驼峰标识。

    结构体的一次性赋值只能在定义时使用(大括号赋值)。

    任何OC对象都是用指针来指的。

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

    例如power2函数

    - (double)power2 : (double)num;

    实现:

    - (double)power2 : (double)num{

        return num * num;

    }

    调用:

    [c add : 1 : 2];


    多个参数继续用冒号连接。


    写法规范:后面的参数可以在冒号前加标签

    - (double)sumWithNum1 : (double)num1 andNum2: (double)num2;

    实现:

    - (double)sumWithNum1 : (double)num1 andNum2: (double)num2{

        return num1 + num2;

    }

    调用:

    [c sumWithNum1 : 1 andNum2 : 2]

    增强了可读性。


    冒号也是方法名的一部分!

    例如上面的三参数函数的名称为 sumWithNum1 : andNum2:


    快速定位:









  • 相关阅读:
    使用CSS画三角形
    Hello World!
    python学习四(处理数据)
    python学习三(数据保存到文件)
    python学习二(文件与异常)
    python学习一(Python中的列表)
    Hadoop 解除 “Name node is in safe mode”(转)
    Java NIO开发需要注意的陷阱(转)
    Java NIO基本使用介绍
    如何设计企业移动应用 by宋凯
  • 原文地址:https://www.cnblogs.com/aiwz/p/6154258.html
Copyright © 2011-2022 走看看