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基础学习笔记(二) - 面向对象基础
		
面向对象 一.面向对象概述 面向对象思想就是在计算机程序设计过程中,参照现实事物,将事物的属性特征.行为特征抽象出来,描述成计算机时间的设计思想.面向对象思想区别于面向过程思想,强调的是通过调用对象的 ...
 
随机推荐
- 正则基础之——环视(Lookaround)
			
环视基础 环视只进行子表达式的匹配,不占有字符,匹配到的内容不保存到最终的匹配结果,是零宽度的.环视匹配的最终结果就是一个位置. 环视的作用相当于对所在位置加了一个附加条件,只有满足这个条件,环视子表 ...
 - MySQL基础 - mysql命令行客户端
			
在Linux系统当中,mysql作为一个客户端命令程序,在很大程度上连接数据库都是使用mysql,因此很有必要熟悉mysql命令行的使用. 这里假设数据库用户为icebug,密码为icebug_pas ...
 - WinForm编程数据视图之DataGridView浅析
			
学习C#语言的朋友们肯定或多或少地接触到了WinForm编程,在C#语言的可视化IDE中(如VS.NET中)使用设计器可以让我们轻松地完成窗体.按钮.标签.图片框等等控件的组合,我们可以轻易地做出界面 ...
 - [CareerCup] 11.2 Sort Anagrams Array 异位词数组排序
			
11.2 Write a method to sort an array of strings so that all the anagrams are next to each other. 这道题 ...
 - Linux内核分析——期末总结
			
Linux内核学习总结 首先非常感谢网易云课堂这个平台,让我能够在课下学习,课上加强,体会翻转课堂的乐趣.孟宁老师的课程循序渐进,虽然偶尔我学习地不是很透彻,但能够在后续的课程中进一步巩固学习,更加深 ...
 - 信息安全系统设计基础实验一:Linux开发环境的配置和使用
			
北京电子科技学院(BESTI) 实验报告 课程:信息安全系统设计基础 班级:1353 姓名:芦畅 傅冬菁 学号:20135308 20135311 成绩: 指导教师:娄家鹏 ...
 - 路由器 NorFlash与NandFlash区别
			
在淘宝上买修改openwrt的路由器,基本上都是改的16MB flash,那么为什么不改到1GB呢? 现在U盘的价格也很便宜啊. 于是我调查了一下,发现flash分为两种,NorFlash与NandF ...
 - 学习笔记——Maven实战(七)常用Maven插件介绍(上)
			
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的.进一步说,每个任务对应了 ...
 - 拥Bootstrap入怀——模态框(modal)篇
			
置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<CSS绘制Android Robot> 作者主页:myvin 博主QQ:851399101(点击QQ和 ...
 - 开源分布式计算引擎 & 开源搜索引擎 Iveely 0.5.0 为大数据而生
			
Iveely Computing 产生背景 08年的时候,我开始接触搜索引擎,当时遇到的第一个难题就是大数据实时并发处理,当时实验室的机器我们可以随便用,至少二三十台机器,可以,却没有程序可以将这些机 ...