• ios学习基础篇一


    搜集的不错的oc学习资料

    大概总结:

    http://my.oschina.net/luoguankun/blog/208526

    详细教程:

    http://www.w3cschool.cc/ios/ios-objective-c.html

    ios不同于java平台下的一些细节:

    1id:
    
    Objective-C有一种比较特殊的数据类型是id。你可以把它理解为“随便”。
    
    在Objective-C里,一切东西都是指针形式保存,你获取到的就是这个对象在内存的位置。那么id就是你知道这个位置,但是不知道里面是啥的时候的写法。
    
    2、 同一个数组可以保存不同的对象:
    
    比如一个数组NSArray,这种数组里面可以保存各种不同的对象,比如这个数组里:
    
    myArray <—-|
    
    0: (float) 234.33f
    
    1: @”我是个好人”
    
    2: (NSImage *)
    
    3: @”我真的是好人”
    
    这是一个由4个东西组成的数组,这个数组包括一个浮点数,两个字符串和一个图片。
    
    3、BOOL,YES,NO:
    
    你可以认为YES表示C#或者Java里的true,NO表示false。而实际上YES是1,NO是0,BOOL本身就是个char。
    
    4、IBOutlet、IBAction是啥玩意,总能看到。
    
    这两个东西其实在语法中没有太大的作用。如果你希望在Interface Builder中能看到这个控件对象,那么在定义的时候前面加上IBOutlet,在IB里就能看到这个对象的outlet,如果你希望在Interface Builder里控制某个对象执行某些动作,就在方法前面加上(IBAction)。
    
    而这两个东西实际上和void是一样的。
    
    5、nil。
    
    Objective-C里的NULL(空)就这么写,表示空指针。
    
    6、为什么是@”字符串”而不是”字符串”
    
    前面加上@符号,编译器在编译的时候会在程序中给你留出位置,这样才能保证这个字符串不会丢失。反正记住,如果你要想把某些字符串写死在程序里,就要用@”字符串”,如果忘了用@,程序应该会出错。
    
    superzhou大侠指正:
    
    6、为什么是@”字符串”而不是”字符串”
    
    ”字符串”是C的字符串,@”"是把C的字符串转成NSString的一个简写.
    
    在需要NSString的地方才需要这个转化,例如NSLog里面.
    
    在需要C string的地方,还是用”字符串”的.
    
    另外,@”"这个转换是不支持中文的.例如NSLog(@”字符串”); 是一定输出不了中文的.
    
    Objective-C 2.0
    
    Objective-C 2.0是Leopard新增加的一门语言,其实和原来的Objective-C是一样的。主要是增加了属性。详细的内容这里不写了,可以参阅Allen Dang的这篇文章,写的很明白。
    
    
    7:NS****
    老乔当年被人挤兑出苹果,自立门户的时候做了个公司叫做NextStep,里面这一整套开发包很是让一些科学家们喜欢,而现在Mac OS用的就是NextStep这一套函数库。
    
    这些开发NextStep的人们比较自恋地把函数库里面所有的类都用NextStep的缩写打头命名,也就是NS****了。比较常见的比如:
    
    ◆NSLog
    
    ◆NSString
    
    ◆NSInteger
    
    ◆NSURL
    
    ◆NSImage
    
    …
    View Code

     object-c:类的定义和实现:

    1:先说说类的定义形式
    先写一个kids.h文件定义这个类:
    
    @interface Kids: NSObject { 
     
    NSString *kidName; 
     
    NSString *kidAge; 
     
    } 
     
    -(BOOL) isCaughtKid:; 
     
    @end 
    
    
    再写一个kids.m文件实现:
    
    #import “kids.h” 
     
    @implementation Kids 
     
    -(void) init { 
     
    kidName=@”mykid”; 
     
    kidAge=@”15”; 
     
    } 
     
    -(BOOL) isCaughtKid:{ 
     
    return YES; 
     
    } 
     
    @end 
    
    注:'-'表示这个函数是实例函数(类似非静态函数),'+'表示这个函数是类函数(类似静态函数)
    
    2:一个方法如何传递多个参数?
    
    一个方法可以包含多个参数(参数用空格隔开),不过后面的参数都要写名字。
    多个参数的写法
    
    (方法的数据类型) 函数名: (参数1数据类型) 参数1的数值的名字 参数2的名字: (参数2数据类型
    
    ) 参数2值的名字 …. ;
    
    举个例子,一个方法的定义:
    
    -(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName; 
    实现这个函数的时候:
    
    -(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName{ 
     
    大儿子 = myOldestKidName; 
     
    二儿子 = mySecondOldestKidName; 
     
    三儿子 = myThirdOldestKidName; 
     
    } 
    调用的时候:
    
    Kids *myKids = [[Kids alloc] init]; 
     
    [myKids setKids: @”张大力” secondKid: @”张二力” thirdKid: @”张小力”];
    View Code

     object-c:的一些基本用法

    1减号(或者加号)
     减号表示一个函数、或者方法、或者消息的开始,怎么说都行。
     比如c#中,一个方法的写法可能是:
     private voidhello(bool ishello)
     {
     //OOXX
     }
     用Objective-C写出来就是
     -(void) hello:(BOOL)ishello
     {
     //OOXX
      }
     挺好懂的吧?
     不过在Objective-C里面没有public和private的概念,你可以认为全是public。
     而用加号的意思就是其他函数可以直接调用这个类中的这个函数,而不用创建这个类的 实   例。
    2 中括号
    中括号可以认为是如何调用你刚才写的这个方法,通常在Objective-C里说“消息”。
    比如C#里你可以这么写:
    this.hello(true);
    在Objective-C里,就要写成:
    [selfhello:YES];
    
    3、为什么是@”字符串”而不是”字符串”
    ”字符串”是C的字符串,@”"是把C的字符串转成NSString的一个简写.
    在需要NSString的地方才需要这个转化,例如NSLog里面.
    在需要C string的地方,还是用”字符串”的.
    另外,@”"这个转换是不支持中文的.例如NSLog(@”字符串”); 是一定输出不了中文的.
    View Code

     对象初始化:

    两种创建新对象的方法:

    [类名 new]

    [[类名 alloc] init]

    这两种方法是等价的,但cocoa的惯例是使用后者。

    alloc在为对象分配空间的同时,将这块内存初始化为0;

    Init方法:初始化实例变量,使对象处于可用状态。[返回类型为id,  返回的值描述了被初始化的对象]

    使用new创建新对象时,系统要完成两个步骤:

        1.       为对象分配内存,即对象获得一个用来存放其实例变量的内存块;

        2.       自动调用init方法,让该对象处于可用状态。

    NSLog:

     规则:

            %@ 对象

        %d, %i 整数

            %u 无符整形

            %f 浮点/双字

            %x, %X 二进制整数

            %o 八进制整数

            %zu size_t%p 指针

            %e 浮点/双字 (科学计算)

            %g 浮点/双字

             %s C 字符串

            %.*s Pascal字符串

            %c 字符

            %C unicha

            r%lld 64位长整数

         (long long)%llu 无符64位长整数

            %Lf 64位双字

    实例:

      NSLog (@"this is a test");

      NSLog (@"string is :%@", string);

      NSLog (@"x=%d, y=%d", 10, 20);

      但是下面的写法是不行的:

      int i = 12345; 

      NSLog( @"%@", i );

      原因是, %@需要显示对象,而int i明显不是一个对象,要想正确显示,要写成:

      int i = 12345;

      NSLog( @"%d", i );

     NSString *tempA = @"123";

      NSString *tempB = @"456";

    1,字符串拼接

     NSString *newString = [NSString stringWithFormat:@"%@%@",tempA,tempB];

    2,字符转int

    int intString = [newString intValue]; 

    3,int转字符

    NSString *stringInt = [NSString stringWithFormat:@"%d",intString] 

    4,字符转float

     float floatString = [newString floatValue];

    5,float转字符

    NSString *stringFloat = [NSString stringWithFormat:@"%f",intString];

     

  • 相关阅读:
    fsockopen
    Ambari安装之部署3个节点的HA分布式集群
    怎么让普通用户达到root用户也可以拥有权限修改文件(CentOS系统)
    谈大数据里各子项目搭建时的环境变量配置(深入)
    Zookeeper的多节点集群详细启动步骤(3或5节点)
    IntelliJ IDEA(Ultimate版本)的下载、安装和WordCount的初步使用(本地模式和集群模式)
    IDEA里如何多种方式打jar包,然后上传到集群
    Zookeeper(1、3、5节点)集群安装
    Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)
    Hadoop概念学习系列之Java调用Shell命令和脚本,致力于hadoop/spark集群
  • 原文地址:https://www.cnblogs.com/yujian-bcq/p/4507427.html
Copyright © 2020-2023  润新知