转自: 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来分别初始化一个对象;
  • 使用[]来调用函数,按照次序分别是:对象名,函数名,: 参数值(如果有),函数名第二部分(如果有),:第二参数值(如果有);

参考:

[转] 从 C 到 Objective C 入门1的更多相关文章

  1. KVC的用法

    示例1:基本赋值取值 @interface Book : NSObject {     NString *name;}@end #import "Book.h"@implement ...

  2. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  3. Objective C 快速入门学习一

    Objective-C程序设计 1. 直接用Xcode作为IDE,舍弃gcc编译方面的学习.2. 入门例子:Eg:打印Hello World 控制台程序 #import<Foundation/F ...

  4. Objective C 快速入门学习五

    <一>继承和多态 @class Complex 声明类(同C++) 子类函数成员 super 访问父类 同C++类似 .通过继承 在子类中添加新方法 .通过继承 在子类中添加新成员 .通过 ...

  5. Objective C 快速入门学习四

    类 1.合成存取器方法 @property   成员变量 @synthesize 成员变量 可以让编译器自动合成 设置和获取函数的方法,不用手动生成set成员变量,Get成员变量 @interface ...

  6. Objective C 快速入门学习三

    1.数据类型 和C语言基本一样. 有一个特别数据类型id,可以储存任何类型的对象,它是实现多态和动态绑定的基础. Objective-C 2.程序结构 Objective-C和C的程序结构一模一样,具 ...

  7. Objective C 快速入门学习二

    Objective-C 类.对象.方法 1.编写一个复数类: #import <Foundation/Foundation.h>@interface Complex: NSObject / ...

  8. 4 字符串 Swift/Objective -C ——《Swift3.0从入门到出家》

    4 字符串   Swift and Object-C 字符串由多个字符组成,使用 “” 引起的内容 swift语言中提供了两种字符串:可变字符串和不可变字符串 可变字符串:字符串的内容可以修改,字符串 ...

  9. iOS 开发-- Runtime 1小时入门教程

    1小时让你知道什么是Objective-C Runtime,并对它有一定的基本了解,可以在开发过程中运用自如. 三.Objective-C Runtime到底是什么东西? 简而言之,Objective ...

随机推荐

  1. centos6.5 安装linux 环境

    准备工作 安装make yum -y install gcc automake autoconf libtool make 安装g++ yum install gcc gcc-c++下面正式开始--- ...

  2. 我的Markdown笔记

    一片简单的Markdown笔记,共8项,基本上满足Markdown文档的编写(表格不建议用Markdown),每项上半部分是源码,下半部分是效果图片. 标题 段落 列表 强调 分割线 代码 连接 图片 ...

  3. 导出Excel和Excel生成dt

    引用ExcelLibrary.dll(qq网盘上有源代码) //导出excel,“”文件名为空时,弹出提示框 ExcelLibrary.DataSetHelper.CreateWorkbook(&qu ...

  4. 使用JDBC获取Oracle连接时报错

    The Network Adapter could not establish the connection       网络适配器不能创建连接 作为初学者的来说,这个问题让我找了好多次,每次重新开启 ...

  5. shell下>和>>的区别

    >  :如果文件不存在,同上,如果文件存在,先将文件清空,然后将数据填入此文件 >> :如果文件不存在,将创建新的文件,并将数据送至此文件:如果文件存在,则将数据添加在文件后面

  6. 多线程环境的UI控件属性更新

    Winform: public delegate void UpadataTextCallBack(string str,TextBox text); public void UpadtaText(s ...

  7. 正则匹配中 ^ $ 和 \b 的区别

    正则匹配中 ^ $ 和 \b 的区别     ^和$分别代表字符串的开始和结束,因此^\d$只能匹配包含一个数字的字符串\b代表单词边界,其前后必须是不同类型的字符,可以组成单词的字符为一种类型,不可 ...

  8. C语言实现四则运算

    学生:宋丹丹 张潇裕 #include<iostream>#include<ctime>using namespace std;void main(){ int x1,x2,a ...

  9. Android 布局中 如何使控件居中

    首先要分两种不同情况,在两种不同的布局方式下:LinearLayout 和RelativeLayout 1. LinearLayout a). android:layout_gravity=" ...

  10. 置信度&置信水平&置信区间

    置信水平是指总体参数值落在样本统计值某一区内的概率:而置信区间是指在某一置信水平下,样本统计值与总体参数值间误差范围.置信区间越大,置信水平越高. 例如:估计某件事件完成会在10~12日之间,但这个估 ...