• 【objc】objectivec学习(1)


    一、开发环境

    使用xcode,可以再app store里面下载,但我嫌速度慢,自己下载安装了,还安装了command line tool,不知道有没有重复。

    用的是4.4.1版本,很多教程是老版本的,所以有些东西不太一样。

    创建命令行程序,使用ObjC:

    新建项目->mac---application---command line tool--->选择Foundation。。那什么的,就是用ObjC的命令行程序。

    二、基本语法

    1、使用#import,可以保证头文件只被引用一次,少了#ifdef,#endif的麻烦。

    2、Foundation是框架,框架是一种聚集在一个单元的部件集合,包含头文件、库、图像、声音文件等。Cocoa的组成部分由Foundation和Application Kit框架。

    3、Cocoa对其所有函数、常量和类型名称都添加了“NS”前缀。

    NSLog(@”Hello World”);

    @表示字符串作为NSString来处理

    4、BOOL类型:具有YES和NO值,

    与C的bool类型不同,非零的BOOL值不一定是NO。

    三、面向对象

    1、void drawShape(id shapes[], int count)

    {

        int i;

        for(i = 0; i < count; i++){

            id shape = shapes[i];

            [shape draw];

        }

    }

    id:是泛型,用于表示任何类的对象

    [shape draw]可以理解成向shape对象发送draw消息;或是让shape对象调用draw方法。

    2、定义接口@interface

    @interface Circle : NSOject    //继承

    {

       ShapeColor fillColor;

       ShapeRect  bounds;

    }

    -(void) setFillColor : (ShapeColor) fillColor;  //类型用()括起,-短横表示声明方法而不是函数

    -(void) draw;

    @end  //Circle

    两个参数的方法调用

    [textThing setStringValue: @”hell0”

                  color: kBlueColor];

    3、接口/方法实现@implementation

    4、对象实例化   [Circle new];

      id shape = [Circle new ];

    5、继承 , 单继承,self关键字指向对象本身,super关键字引用父类成员

    6、复合:复合是通过包含作为实例变量的对象指针实现的。(对象之间的组合)

    @interface Unicycle : NSObject

    {

        Tire *tire;

    }

    7、存取方法。不将get作为getter方法的前缀

    四、头文件.h,实现问.m

    1、循环依赖关系,@class很有用

    即A类使用B类,B类也使用A类,如果试图#import语句让这两个类相互引用,会出现编译出错。

    可以再A.h中使用@class B, B.h中使用@class A

    @class指令能减少编译时间,它告诉编译器“相信我,你最终能够了解这个名称的类”

    五、使用Xcode,快捷键

    command [ 左移代码块

    tab 接受代码提示

    esc 显示代码提示菜单

    control-. 循环浏览代码提示

    control-F 前移光标

    control-B后移

    control-P上移

    control-N下移

    control-A行首

    control-E行尾

    control-D删除光标右边的字符

    control--K删除行

    command-alt-P继续(调试)

  • 相关阅读:
    xx
    java
    SAFe 4.0参考指南:精益软件与系统工程的规模化敏捷框架
    Scaled Agile Framework – SAFe for Lean Enterprises
    云宏信息科技股份有限公司
    k8s~kubectl常用命令
    springboot~mvn多个关联项目打包问题
    java~线程池的总结~续
    java~线程池的总结
    电子工程师必备:九大系统电路识图宝典
  • 原文地址:https://www.cnblogs.com/549294286/p/2660852.html
Copyright © 2020-2023  润新知