黑马程序员技术交流社区

标题: ios一部分小知识 [打印本页]

作者: 我是菜鸟ios    时间: 2016-1-3 21:09
标题: ios一部分小知识
ios小知识
本质上还是一个对象.叫类对象.这个对象的类型:Class
类对象是在程序启动的时候加载的,与对象创建无关.
加载的标志:是load方法.
对象是在它被创建的时候加载的.且必须在类对象加载完成后才会加载.
对象加载会执行initialize方法. 只会在对象第一次创建的时候执行.
init :构造方法
构造方法是在对象被创建的时候执行的.对象每次创建都会执行.
注意:
1.一个类的实例对象被创建,则其父类的对象也会被创建.(直接或间接父类都会被创建)
2.分类的load方法不会覆盖主类的.主类与分类的load方法在程序启动的时候都会执行.
*/
类对象只有一个
Class c=[am class];
//    Class c2=[am2 class];
//    Class c3=[Animal class];
1,类是什么
类的本质其实也是一个对象(类对象);
类对象
1,类对象在程序运行时一直存在。
2,类对象是一种数据结构,存储类的基本信息:类大小,类名称,类的版本以及消息与函数的映射表等
3,每一个对象都包含一个指向其类对象的isa指针。

2、类对象如何获取
通过实例对象获取
Dog *d1 = [Dog new];
Dog *d2 = [Dog new];
Class c =   [d1 class];
Class c2 = [d2 class];
通过类名获取(类名其实就是类对象)
Class c3 = [ Dog  class ];
因为类对象在整个程序中只存在一份,
所以 c = c2 = c3
3.类对象的使用,如何使用
1)可以用来调用类方法 :
//获取类对象
Class c1 = [Person class];
//使用类对象调用类方法
[c1 test]; // test是一个+号方法
2)可以用来实例化实例对象, 并且调用对象方法
//获取类对象
Class c1 = [Person class];
//使用类对象创建实例对象
Person *p = [c1 new];
[p test];  // -test 调用对象方法
4. 类对象存储细节
通过打印地址分析测试:类对象存在数据段;

SEL类型
SEL是一种新的数据类型。和id、class一样。
Person *p = [Person new];
SEL s1 = @selector(test);
[p performSelector:s1];


注意:
    以下所学的字符串常用函数都在头文件<string.h>中,所以用这些函数之前要导入这个头文件


    1.strcmp:
            用法:int strcmp(字符串1,字符串2);

            两个参数,一个int的返回值:

        作用:
            判断两个字符串是否相同,如果返回0代表两个字符串相同 (实际开发中的用法)

            是比较两个字符串大小的!

            问字符串1比字符串2大吗?大则返回正数,相等则返回0,小于则返回负


        判断用户输入的账号是否等于某个账号
            做登录!!
                如果用户输入的是admin密码是88888,那么就提示登录成功,否则提示登录失败



    2.strcat:
            用法:strcat(字符数组1,字符串2);

        作用:把字符串2加入到字符数组1的实际字符串后面

            比如说前面一个字符数组保存的abc
            字符串2传的是qwe
            那么调用完后,字符数组最终保存的是abcqwe

        注意:字符数组1必须保证长度足够长



    3.strcpy:
            用法:strcpy(字符数组1,字符串2);

        作用:把字符串2复制到字符数组1,会覆盖掉字符数组1原来的内容

            比如说前面一个字符数组保存的是abc
            字符串2是qwe
            那么调用完后字符数组1最终保存的是qwe

        注意:字符数组1的长度必须保证足够长

        应用场景在:给字符数组重新赋值的时候


    4.strlen:
          用法:unsigned long  strlen(字符串);

        作用:计算这个字符串的实际长度,不包括\0

        注意:如果遇到中文或者中文符号,那么中文的实际位数要*3
        strlen的原理是:一直遍历你这个字符串,统计次数,直到遇到\0就结束

*/

#include <stdio.h>
#include <string.h>//要导入


int main(int argc, const char * argv[]) {
   
    //strcmp
    /*
    char str1[10] = "azc";
   
    char str2[] = "zbc";
   
    //数组名就是地址,所以这里比较的是地址是否相同
    if(str1 == str2){
        
        printf("相同\n");
        
    }else{
        
        printf("不相同\n");
    }
   
   
    int res = strcmp(str1, str2);
   
    printf("%d\n",res);//-25
   
    */
   
    //strcat
    /*
//    char str[4] = "abc";
//
//    strcat(str, "qwe");//越界错误
//   
//    puts(str);//abcqwe
   
    char str[] = "abc";//长度为4
   
    strcat(str, "qwe");//
   
    puts(str);//abcqwe
    */
   
    //strcpy
    /*
//    char str[10] = "abc";
//   
//    strcpy(str, "qwe");
//   
//    puts(str);//qwe
   
//    char *str = "abc";
//   
//    strcpy(str, "qwe");//这是错误的
//   
//    puts(str);//qwe
   
//    char str[] = "abc";//4个长度
//    strcpy(str, "qwerty");//运行报错,因为越界
   
   
//    char str[5];
//   
//    strcpy(str,"abc"); //相当于给str赋值
//   
//    puts(str);
   
//    char str[5];
//   
//    str = "abc";//不可以,因为数组名是一个地址常量
   
    char str[5] = "abc";
   
    //此时我想让str里面存的是zxv
   
//    str[0] = 'z';
//    str[1] = 'x';
//    str[2] = 'v';
   
    strcpy(str, "zxv");
    puts(str);
    */
   
    //strlen
    /*
//    char str1[4] = "abc";
//    long len = strlen(str1);
//   
//    printf("len=%ld\n",len);//3
//   
   
//    char *str = "abc";
//    long len = strlen(str);
//   
//    printf("len=%ld\n",len);//3

//    long len = strlen("abc");
//   
//    printf("len=%ld\n",len);//3
   
   
//    char str[10] = "abc\0zxc";
//   
//    long len = strlen(str);
//   
//    printf("len=%ld\n",len);//3
   
   
//    char str[] = "帅哥";//长度为7
//   
//    long len = strlen(str);
//   
//    //中文在MAC里面占用3个字节
//    //因为一个char类型只有1个字节,保存不了3个字节的汉字
//    //char c = '哈'; //这个会报错
//   
//    printf("len=%ld\n",len);//6  在mac下面一个中文字占用3个字节
   
//    char str[] = ",";
//   
//    printf("%lu\n",strlen(str));
   
   
//    char str[] = "abc哈哈哈"; //数组长度那才是13个
//   
//    printf("%lu\n",strlen(str));//12

   
//    char str[] = "班长不要爱我,haha"; //数组长度26
//   
//    printf("%lu\n",strlen(str));//25
    */
   
    return 0;
}

作者: 海棠依旧2046    时间: 2016-1-3 22:25
c语言就这么过了,好多东西没弄懂,也不知道后面有没有讲的
作者: 张某某    时间: 2016-1-4 14:09
真心难啊
作者: 张某某    时间: 2016-1-4 14:10
感觉好难啊,没有基础的学习这个需要特别的努力啊!!!!!!!!!!
作者: xiaoku___    时间: 2016-1-4 19:34
赞一个。。。。。
作者: yuhao1993    时间: 2016-1-6 09:09
赞一个,加油
作者: song0619    时间: 2016-1-6 09:25
赞一个,
作者: FYJKL    时间: 2016-1-6 12:53
总结的挺全面的
作者: 明阳天夏    时间: 2016-1-6 13:05
表示技术内涵丰富




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2