• [转] 从 C 到 Objective C 入门1


    转自: http://blog.liuhongwei.cn/iphone/objective-c/

    进军iPhone开发,最大的难点之一就是怪异的Objective C语法了。不过,了解之后才发现,原来仅仅是形式上与C++、Java有差异,属于换汤不换药。如果有C语言基础,又用过C++、Java,2天之内掌握Objective C,没有问题,至少看例子程序会感觉顺眼很多。

    Objective C脱胎于C语言,苹果版的开发编译环境就是大名鼎鼎的Xcode,其中的Cocoa就是Objective C库函数。

    与C语言一致的部分

    int main( int argc, const char *argv[] ) {
        printf( "hello worldn" );
        return 0;
    }
    • 数据类型,表达式,各种运算符
    • 循环:for, while, do while, break, continue
    • 分支:if, else, switch

    类定义@interface

    #import <Foundation/NSObject.h>
     
    @interface Bank: NSObject {
        NSString *name;
        int amount;
    }
     
    -(void) print;
    -(void) addAmount: (int) a;
    -(int) amount;
    -(Bank *) initWithName: (NSString *) n andAmount: (int) a;
     
    @end
    • 写在Bank.h中
    • #import是引入库函数
    • @interface是表明定义了一个类,冒号后面是父类类型
    • 两个大括号之间的部分就是类的成员变量,只有类函数能够直接访问
    • - 表明要定义一个类对象级别的函数;如果是+,表明要定义类级别的函数
    • 返回值与参数的类型放在()内
    • 函数定义中的: 表明后面会跟一个参数
    • 如果函数有多个参数,要写多个xxx:
    • 类的函数定义结束后,使用@end关闭

    类实现@implementation

    #import "Bank.h"
    #import <Foundation/NSObject.h>
    #import <Foundation/NSString.h>
     
    @implementation Bank
    -(void) print {
        printf("Total amount is %i", amount);
    }
     
    -(void) addAmount: (int) a {
        amount += a;
    }
     
    -(int) amount{
        return amount;
    }
     
    -(Bank *) initWithName: (NSString *) n andAmount: (int) a{
        self = [super init];
        name = n;
        amount = a;
        return self;
    }
     
    @end
    • 写在Bank.m
    • @implementation定义函数的具体内容,后面接着类名
    • 函数头按照定义来写
    • 最后用@end来结束所有函数体

    调用写好的类和类函数

    #import <Foundation/NSObject.h>
    #import <Foundation/NSString.h>
    #import "Bank.h"
     
    int main( int argc, const char *argv[] ) {
        //创建新对象,使用缺省初始化函数
        Bank *bankDefault = [[Bank alloc] init];
     
       //创建新对象,使用自定义初始化函数
       Bank *bank = [[Bank alloc] initWithName: @"Harry" andAmount: 28];
     
        [bank addAmount: 1];
     
        [bank print];
     
        [bank free]; // 释放对象
       [bankDefault free]; // 释放对象
     
        return 0;
    }
    • 调用类函数的时候,首先创建并初始化对象。这里我们使用缺省的init和我们自定义的initWithName来分别初始化一个对象;
    • 使用[]来调用函数,按照次序分别是:对象名,函数名,: 参数值(如果有),函数名第二部分(如果有),:第二参数值(如果有);

    参考:

  • 相关阅读:
    SDOI2008]仪仗队
    洛谷P1414 又是毕业季II
    P3865 【模板】ST表
    [HAOI2007]理想的正方形
    noip 2011 选择客栈
    [AHOI2009]中国象棋
    洛谷P3387 【模板】缩点
    [SCOI2005]最大子矩阵
    [CQOI2009]叶子的染色
    LibreOJ #116. 有源汇有上下界最大流
  • 原文地址:https://www.cnblogs.com/jason-liu-blogs/p/3396066.html
Copyright © 2020-2023  润新知