IOS基础之 (二) 面向对象思想
编写Objective-C程序时,要使用Foundation框架。
什么是框架?
框架(framework)是由很多类(class)组成的库,可以用来编写程序。
对象(Object)
- 对象可以保存数据,还可以包含一组函数。
- 函数可以使用对象所包保存的数据。
- 向对象发送某个消息(message), 可以出发响应的函数。
- 这类由消息出发的函数称为方法(method)。
- OC是一门弱语法。
一 创建第一个Objective-C 程序
创建一个项目,Create a new Xcode project -> OS X 下得 Application -> Command Line Tool , 名称为 FirstOC, 如下图所示:

对于包含Object-C代码的文件,一般使用后缀 .m 。在Xcode 中找到main.m并打开,输入以下几行代码:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"Hello, World!");
NSDate *now = [NSDate date];
NSLog(@"The date is %@" , now );
}
return ;
}
在这段代码中,程序向NSDate类发送了date消息,NSDate类的date方法会创建一个NSDate实例,将其中初始化为当前日期时间,然后返回新对象的起始地址。
接着程序将得到的地址保存在 now 变量中,now变量是一个指向NSDate对象的指针。
构建并运行。输出结果大致如下:
-- ::36.130 FirstOC[:] Hello, World!
-- ::36.135 FirstOC[:] The date is 2015-03-16 12:44:36 +0000
NSLog()会先输出日期,时间,程序名称和进程ID ,然后输出实际内容, 具体的时间信息会不同。
NSLog()是Foundation提供的一个功能强大的输出函数,功能与printf()相似,它不仅可以输出字符串,还可以输出整数,C分格的字符串和Objective-C对象。
1)NSLog()的第一个参数是一个字符串常量,改字符串中用%格式的占位符,这个占位符会由对应的变量填充。
NSLog()函数支持的格式字符
| 格式字符 | 说明 |
| %d | 以十进制形式输出整数 |
| %o | 以八进制形式输出整数 |
| %x | 以十六进制形式输出整数 |
| %@ | 输出OC对象的"描述信息",输出NString字符串 |
| %p | 输出对象的指针 |
| %f | 输出浮点数 |
| %s | 输出C语言的字符串 |
%@ 对象
%d,%i 整数
%u 无符整形
%f 浮点/双字
%x,%X 二进制整数
%o 八进制整数
%p 指针
%e 浮点/双字 (科学计算)
%g 浮点/双字
%s C 字符串
%c 字符
%C unichar
%lld 64位长整数(long long)
%llu 无符64位长整数
%Lf 64位双字
2) NSLog()的格式化字符串必须必须加上前缀@, 它的输出会自动换行,无需再最后加上 \n 。
在Java编程中,使用System.out.println()方法来输出字符串,这就涉及用到一个static关键字。System是java.lang里面的一个类,而out是System里面的一个数据成员,但这个成员不是基本类,而是java.io.PrintStream类的对象。被关键字static修饰的数据成员或方法可以直接通过“类名.数据成员”或“类名.方法”来引用,而无须先建立对象。所以System.out是应用了out这个静态数据成员。而out又是一个java.io.PrintStream类的对象,所以out必然可以调用java.io.PrintStream类里面的方法,println()就是java.io.PrintStream类里的一个方法,它的作用就是用来想控制台输出信息的。
public class FirstHello{
public static void main(String[] args){
System.out.println("Hello xpws ."):
}
}
3)例子
//常用类型的定义
int i =;
BOOL isShow=TRUE;
float f = 3.1415926;
char a =;
NSString *name =@"Himi";
//常用打印语句
NSLog(@"字符串:%@",name);
NSLog(@"字符:%c",a);
NSLog(@"布尔值:%i",isShow);
NSLog(@"整形:%i",i);
NSLog(@"单精度浮点数: %f",f);
NSLog(@"精度浮点数,且只保留两位小数:%.2f",f);
NSLog(@"科学技术法:%e",f);
NSLog(@"科学技术法(用最简短的方式):%g",f);
NSLog(@"同时打印两个整数:i=%i,f=%f",i,f);
4)数据类型说明

5)NSString与NSInteger的相互转换
NSInteger integerNumber = ;
NSString * string = [NSString stringWithFormat:@"%d",integerNumber];
NSLog(@"string is %@", string); int integer = [string intValue];
NSLog(@"integer is%d", integerNumber);
二 ID
当声明为指向对象的指针时,通常都会明确的写出相应对象的类,上例所示:
NSDate *now = [NSDate date];
但是在编程时,很可能碰到以下这种情况,声明指针时并不知道所指对象的准确类型,为此可以使用id类型。
id类型的含义是:指针,并可以指向任意类型的 Objective-C对象,以下是语法说明:
id delegate ;
使用id例子声明日期的例子:
id now = [NSDate date] ;
NSLog(@"Today is %@" , now);
注意:以上这泽变量声明中没有使用星号,id已经隐含了星号的作用。
IOS基础之 (二) 面向对象思想的更多相关文章
- java基础复习二——面向对象一
面向对象三大特性:封装,继承,多态 类:对象的蓝图,生成对象的模板,是对一类事物的描述,是抽象的概念上的定义 对象:是实际存在的该类事物的每个个体,也称为实例 类之间三种关系:依赖关系(uses-a) ...
- delphi 基础之二 面向对象概念初步
面向对象概念初步 •类自动生成 快捷键:ctrl+shift+c 1.类的定义 类是用户创建的数据类型,包括状态.表达式和一些操作.有3个组成部分,即字段.方法和属性.字段是类的内部数据变量,方法就是 ...
- ios 基础学习二
1:@property @synthesize 属性(类似java里的get set) 上面那个类原先的实现是这样: #import @interface Photo : NSObject { NS ...
- IOS基础开发二(iphone计算器)
今天做了个iphone的小例子计算器:才用mvc设计模式 项目目录: 代码如下: CalculatorViewController:(MVC的控制器) // CalculatorViewControl ...
- C# 基础复习 二 面向对象
继承:子承父业 子:子类 父:父类 业:所有非私有成员 好处:代码的复用 继承后,实例化子类时,不止子类的构造,父类的构造也会执行,而且父类的构造先于子类的构造执行 即使在子类可以看 ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
JAVA之旅(三)--数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想 我们继续JAVA之旅 一.数组 1.概念 数组就是同一种类型数据的集合,就是一个容器 数组的好 ...
- iOS类的合理设计,面向对象思想
每天更新的东西可能有反复的内容.当时每一部分的知识点是不同的,须要大家认真阅读 这里介绍了iOS类的合理设计.面向对象思想 main.m #import <Foundation/Foundati ...
- Java基础学习笔记(二) - 面向对象基础
面向对象 一.面向对象概述 面向对象思想就是在计算机程序设计过程中,参照现实事物,将事物的属性特征.行为特征抽象出来,描述成计算机时间的设计思想.面向对象思想区别于面向过程思想,强调的是通过调用对象的 ...
随机推荐
- 层叠上下文(The stacking context)
MDNThe stacking context 层叠上下文是HTML元素的三维概念,这些HTML元素在一条假想的相对于面向(电脑屏幕的)视窗或者网页的用户的z轴上延伸,HTML元素依据其自身属性按照优 ...
- MVC4验证用户登录特性实现方法
在开发过程中,需要用户登陆才能访问指定的页面这种功能,微软已经提供了这个特性. // 摘要: // 表示一个特性,该特性用于限制调用方对操作方法的访问. [AttributeUsage(Attribu ...
- CSS 实现加载动画之三-钢琴按键
今天做的这个动画实现也是非常简单,简单数几行代码就可以搞定.给这个动画取了个优雅的名字--钢琴按键,也实在是想不出什么更形象的名字了.废话不多说,直接上图. 1. 先看gif图 2. 代码实现思路 2 ...
- Linux下如何查看tomcat是否启动
在Linux系统下,重启Tomcat使用命令操作的! 首先,进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 使用Tomcat关闭命令 ./shutdown.sh 查看 ...
- GDB深入研究
GDB深入研究 一.GDB代码调试 (一)GDB调试实例 在终端中编译一个示例C语言小程序,保存到文件 gdb-sample.c 中,用GCC编译之 #include <stdio.h> ...
- initializer for conditional binding must have optional type not AVAudioPlayer
if let buttonBeep = self.setupAudioPlayerWithFile("ButtonTap", type: "wav") { ...
- Jenkins进阶系列之——10Publish Over SSH插件
说明:这个插件可以通过ssh连接其他Linux机器 官方说明:Publish Over SSH 安装步骤: 系统管理→管理插件→可选插件→Artifact Uploaders→Publish Over ...
- Lisp简明教程
此教程是我花了一点时间和功夫整理出来的,希望能够帮到喜欢Lisp(Common Lisp)的朋友们.本人排版很烂还望多多海涵! <Lisp简明教程>PDF格式下载 <Lisp简明教程 ...
- 【MPI0】学习资料搜集
一个不错的英文的MPI教程:http://mpitutorial.com 中科大的MPI学习资料:http://micro.ustc.edu.cn/Linux/MPI/ 清华大学的并行计算资料:htt ...
- 系统安全扫描工具(appscan)的扫描类型小记
扫描分类 不同场景需要使用不同方式的扫描类型.不能盲目的.暴力的去折腾. 自动扫描 刚开始扫描的时候适合用这种方式.有助于,理解整个网站的结构. 需要注意的是:去伪静态和业务冗余 伪静态 url结构相 ...