Objective-C入门
厂长最近又有新计划,准备做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入门的更多相关文章
- [转] 从 C 到 Objective C 入门1
转自: http://blog.liuhongwei.cn/iphone/objective-c/ 进军iPhone开发,最大的难点之一就是怪异的Objective C语法了.不过,了解之后才发现,原 ...
- KVC的用法
示例1:基本赋值取值 @interface Book : NSObject { NString *name;}@end #import "Book.h"@implement ...
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- Objective C 快速入门学习一
Objective-C程序设计 1. 直接用Xcode作为IDE,舍弃gcc编译方面的学习.2. 入门例子:Eg:打印Hello World 控制台程序 #import<Foundation/F ...
- Objective C 快速入门学习五
<一>继承和多态 @class Complex 声明类(同C++) 子类函数成员 super 访问父类 同C++类似 .通过继承 在子类中添加新方法 .通过继承 在子类中添加新成员 .通过 ...
- Objective C 快速入门学习四
类 1.合成存取器方法 @property 成员变量 @synthesize 成员变量 可以让编译器自动合成 设置和获取函数的方法,不用手动生成set成员变量,Get成员变量 @interface ...
- Objective C 快速入门学习三
1.数据类型 和C语言基本一样. 有一个特别数据类型id,可以储存任何类型的对象,它是实现多态和动态绑定的基础. Objective-C 2.程序结构 Objective-C和C的程序结构一模一样,具 ...
- Objective C 快速入门学习二
Objective-C 类.对象.方法 1.编写一个复数类: #import <Foundation/Foundation.h>@interface Complex: NSObject / ...
- 4 字符串 Swift/Objective -C ——《Swift3.0从入门到出家》
4 字符串 Swift and Object-C 字符串由多个字符组成,使用 “” 引起的内容 swift语言中提供了两种字符串:可变字符串和不可变字符串 可变字符串:字符串的内容可以修改,字符串 ...
- iOS 开发-- Runtime 1小时入门教程
1小时让你知道什么是Objective-C Runtime,并对它有一定的基本了解,可以在开发过程中运用自如. 三.Objective-C Runtime到底是什么东西? 简而言之,Objective ...
随机推荐
- Egret中的对象池ObjectPool
为了可以让对象复用,防止大量重复创建对象,导致资源浪费,使用对象池来管理. 对象池具体含义作用,自行百度. 一 对象池A 二 对象池B 三 字符串key和对象key的效率 一 对象池A /** * 对 ...
- 使用WCF 测试客户端测试你的WCF服务
wcftestclient.exe是一个GUI的工具用于测试WCF,只需在Visual studio command line 窗口中键入 wcftestclient,就启动这个程序.如下图: 然后通 ...
- error C2259: 'CException' : cannot instantiate abstract class
vc6.0编译通过,VS2008则报错 解决方法: 把CException改为CUserException
- 一步步编写avalon组件01:弹出层组件
avalon2已经稳定下来,是时候教大家如何使用组件这个高级功能了. 组件是我们实现叠积木开发的关键. avalon2实现一个组件非常轻松,并且如何操作这个组件也比以前的avalon2,还是react ...
- bash脚本编程之二 条件判断and 逻辑运算
1.条件测试结构 1) if/then结构: 判断命令列表的退出码是否为0,0为成功. 如果if和then在条件判断的同一行上的话, 必须使用分号来结束if表达式: if和then都是关键字. 关键字 ...
- VC++ MFC中如何将应用程序的配置信息保存到注册表中(二)
在上一篇中介绍了几个写入注册表数据和读取注册表数据的接口,并介绍了使用方法. 这一片教你如何使得你的应用程序在下次打开时保持上一次关闭前的状态. 在上一篇添加的代码的基础上,要添加WM_CLOSE消息 ...
- Intellij Idea使用技巧、快捷键
1.Idea设置字体大小:file -> setting -> editor -> colors&font -> save as并自定义 -> font -> ...
- [C#]循环输出 000 - 999999
循环输出 000 - 999999 ; i < ; i++) { , i.ToString().Length); j < 7; j++) { Debug.WriteLine(i.ToStr ...
- JDBC第一天
(一)JDBC访问数据库的工作过程: <1>加载驱动,建立连接 oracle数据库:在项目中导入ojdbc.jar包 数据库驱动路径:String driver ...
- MySQL表分区
MySQL的表分区 一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以 ...