zoukankan      html  css  js  c++  java
  • 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 0;
    }

      在这段代码中,程序向NSDate类发送了date消息,NSDate类的date方法会创建一个NSDate实例,将其中初始化为当前日期时间,然后返回新对象的起始地址。

    接着程序将得到的地址保存在 now 变量中,now变量是一个指向NSDate对象的指针。

      构建并运行。输出结果大致如下:

    2015-03-16 20:44:36.130 FirstOC[67855:3381337] Hello, World!
    2015-03-16 20:44:36.135 FirstOC[67855:3381337] 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()的格式化字符串必须必须加上前缀@, 它的输出会自动换行,无需再最后加上 。

      在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)例子

     1  //常用类型的定义
     2 int i =10;
     3 BOOL isShow=TRUE;
     4 float f = 3.1415926;
     5 char a =120;
     6 NSString *name =@"Himi";
     7 //常用打印语句
     8 NSLog(@"字符串:%@",name);
     9 NSLog(@"字符:%c",a);
    10 NSLog(@"布尔值:%i",isShow);
    11 NSLog(@"整形:%i",i);
    12 NSLog(@"单精度浮点数: %f",f);
    13 NSLog(@"精度浮点数,且只保留两位小数:%.2f",f);
    14 NSLog(@"科学技术法:%e",f);
    15 NSLog(@"科学技术法(用最简短的方式):%g",f);
    16 NSLog(@"同时打印两个整数:i=%i,f=%f",i,f);

     4)数据类型说明

     

    5)NSString与NSInteger的相互转换

    1 NSInteger integerNumber = 888;
    2 NSString * string = [NSString stringWithFormat:@"%d",integerNumber];
    3 NSLog(@"string is %@", string); 
    4 
    5 int integer = [string intValue];
    6 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已经隐含了星号的作用

       

  • 相关阅读:
    友盟页面统计
    为什么调用 FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment?
    让jQuery的ajaxFileUpload插件支持onchange事件
    sublime双击选择全选带中划线
    配置Chrome Workspace功能
    font-face 跨域解决
    Yahoo团队经验:网站性能优化的34条黄金法则
    require.js+knockout.js+.underscore模板引擎的使用
    使用livereload实现自动刷新
    WebStorm 7.0 支持更多的Web技术
  • 原文地址:https://www.cnblogs.com/wangshuo1/p/iOS-2.html
Copyright © 2011-2022 走看看