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

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

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

文件类型

Objective-C的文件类型的设计和C++差不多,也分为头文件和源文件,头文件(以.h结尾)中包含类的定义,而源文件(以.m结尾)中则包含类中函数的实现。同时项目中还可以包含C\C++\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中都是可用的

今天就扯这些,收工休息

Objective-C入门的更多相关文章

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

    转自: http://blog.liuhongwei.cn/iphone/objective-c/ 进军iPhone开发,最大的难点之一就是怪异的Objective C语法了.不过,了解之后才发现,原 ...

  2. KVC的用法

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

  3. Automake

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

  4. Objective C 快速入门学习一

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

  5. Objective C 快速入门学习五

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

  6. Objective C 快速入门学习四

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

  7. Objective C 快速入门学习三

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

  8. Objective C 快速入门学习二

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

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

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

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

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

随机推荐

  1. WebService到底是什么?

    一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...

  2. CentOS 问题集锦

    在CentOS 6更新后,不可避免的会在启动选项中产生多个内核选项,一个内核文件大概占100兆左右(一般100M以下),可以使用以下命令进行删除多余的内核. 1.首先列出系统中正在使用的内核: # u ...

  3. mysql的从头到脚优化之服务器参数的调优

    一. 说到mysql的调优,有许多的点可以让我们去做,因此梳理下,一些调优的策略,今天只是总结下服务器参数的调优  其实说到,参数的调优,我的理解就是无非两点: 如果是Innodb的数据库,innod ...

  4. django中自定义标签和过滤器

    想要实现自定义标签和过滤器需要进行准备工作: 准备(必需)工作: 1  在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为polls的app下创建了一个tem ...

  5. jQuery触发<a>标签的点击事件无效

    <a id="workFrame" href="pages/work.html" target="FrameBox">首页< ...

  6. sql left join、right join、inner join

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...

  7. (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  8. html5 -js判断undefined类型

    js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reVal ...

  9. Codeforces Round #382 (Div. 2) 继续python作死 含树形DP

    A - Ostap and Grasshopper zz题能不能跳到  每次只能跳K步 不能跳到# 问能不能T-G  随便跳跳就可以了  第一次居然跳越界0.0  傻子哦  WA1 n,k = map ...

  10. maven学习(4)-本地项目打包发布到私有仓库

    发布本地项目到私服仓库 在前面章节有介绍maven发布本地jar包到私服仓库,这里详细介绍一下步骤. 在项目开发中通常会引用其他的jar,怎样把自己的项目做为一个jar包的形式发布到私服仓库中,主要有 ...