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

     

  • 相关阅读:
    【LeetCode】Validate Binary Search Tree
    【LeetCode】Search in Rotated Sorted Array II(转)
    【LeetCode】Search in Rotated Sorted Array
    【LeetCode】Set Matrix Zeroes
    【LeetCode】Sqrt(x) (转载)
    【LeetCode】Integer to Roman
    贪心算法
    【LeetCode】Best Time to Buy and Sell Stock III
    【LeetCode】Best Time to Buy and Sell Stock II
    CentOS 6 上安装 pip、setuptools
  • 原文地址:https://www.cnblogs.com/yujian-bcq/p/4507427.html
Copyright © 2011-2022 走看看