zoukankan      html  css  js  c++  java
  • Objective-C入门

     厂长最近又有新计划,准备做iOS上的开发,要操作工们(其实就是我自己)学习Objective-C,准备为厂子下一步的发展做出巨大贡献。拿人钱财,替人消灾,又得花时间折腾一门语言。话说自从来到现车间,用过C、C++、C#、Python,还写过几句PHP、ASP,刚开始Linux和AIX平台,后来接手Windows平台,可谓万能的螺丝钉,哪里需要就往哪里插。可悲的是无一样称得上精通。

    闲话少说,开始正题。本篇博客意在给有一些经验的CC++新手做个Objective-C语法的简介,内容只是Objective独特的地方,至于继承、重写等基本概念和C++是类似的,想要深入学习,还是得巨资买苹果产品亲身实践,本人也是仅仅看了几页书,纸上谈兵而已。

    Objective-C属于C的超集,所以基本的控制结构啊啥的都和C差不多,主要是涉及到面向对象的一些概念,Objective-C有自己独立的一套东西。

    文件类型 

    Objective-C的文件类型的设计和C++差不多,也分为头文件和源文件,头文件(以.h结尾)中包含类的定义,而源文件(以.m结尾)中则包含类中函数的实现。同时项目中还可以包含CC++Perl等代码文件。

    类的定义

    // .h文件
    #import <Foundation/Foundation.h>
    
    @interface People: NSObject
    {
        int sex;
    }
    
    -(int) sex;
    -(void) setSex:(int) s;
    
    @end
    // .m文件
    @implementation People
    -(int) sex
    {
        return sex
    }
    
    -(void) setSex:(int) s
    {
        sex = s;
    }
    @end

    上面对于成员变量sex的操作可以使用accessor methods实现,其本质上就是让编译器来帮你实现这些函数,减少工作量。

    ### Synthesized Accessor Methods ###

    // .h文件
    #import <Foundation/Foundation.h>
    
    @interface People: NSObject
    
    @property int sex;
    
    @end
    
    // .m文件
    @implementation People
    @synthesize sex;
    @end

    ### 类的继承 ###

    @class ParentClass //前置声明
    @interface ChildClass: ParentClass
    @end

    ### Category的使用 ###

    // category.h
    #import "People.h"
    @interface People (LiveOps)
    -(void) love: (People *) p;
    -(void) think;
    -(void) die;
    @end
    
    // category.m
    @implementaion People (LiveOps)
    -(void) love: (People *) p
    {
    }
    
    -(void) think
    {
    }
    
    -(void) die
    {
    }
    @end

    ### Protocol的使用 ###

    // .h文件
    @protocol Living
    -(void) think;
    -(void) love;
    @optional
    -(void) getMarried;
    @end

    category和protocol是有差别的。使用category的目的是在不修改原有类的前提下,为该类添加新功能,而且category中的函数不必全部实现,而protocol是提前约定好接口,虽然protocol中函数也可以可选实现,但是需要使用optional声明。

    除此之外,C中的enum、struct、typedef、define等在Objective-C中都是可用的

    今天就扯这些,收工休息

  • 相关阅读:
    select(Linux 编程)
    Amazon DynamoDB, 面向互联网应用的高性能、可扩展的NoSQL数据库
    键值表
    工厂方法模式之C++实现
    spring(16)------spring的数据源配置
    LeetCode 206 Reverse Linked List(反转链表)(Linked List)(四步将递归改写成迭代)(*)
    地图之CLLocationManager的使用 定位功能使用
    正则则表达式大全(收集)
    文件的读取和写入(指定路径)
    二维码(带有图片)的生成
  • 原文地址:https://www.cnblogs.com/jimmychange/p/3498875.html
Copyright © 2011-2022 走看看