美文网首页
Objective-C 碎碎念 1

Objective-C 碎碎念 1

作者: 大地瓜123 | 来源:发表于2017-08-15 20:36 被阅读0次

    本文为大地瓜原创,欢迎知识共享,转载请注明出处。
    虽然你不注明出处我也没什么精力和你计较。
    作者微信号:christgreenlaw


    #import的意义在于可以防止重复拷贝,多次书写并不会多次引用头文件。

    OC中是可以直接写C代码的。(OC完整的支持C,实际上OC是C的扩充)


    类的{}中写的属性,默认是无法访问的,可以在之前加上@public,就可以通过指针形式类似访问结构体属性那样来访问。(OC类的本质就是结构体)

    @interface TestClass : NSObject
    {
        int _ok;
        @public 
        int _hehe;
    }
    
    TestClass *p = [TestClass new];
    p->_hehe = 8;//OK
    p->_ok = 3;//not OK
    
    

    只要通过一个类调用类的new方法, 也就是给类发送一个叫做new的消息之后,系统内部就会做3件事情:

    1. 为类创建出来的对象分配存储空间
    2. 初始化类创建出来的对象中的属性
    3. 返回类创建出来的对象对应的地址

    类方法和对象方法之间的调用:

    1. 对象方法中可以直接调用类方法
    2. 类方法中间接调用对象方法 (还没有对象呢就调用对象方法,强烈不建议这样做)
    3. 类方法中可以直接调用其它类方法
    4. 对象方法中可以直接调用对象方法

    成员变量不能在定义的时候初始化({}中的写法)

    方法可以只有声明没有实现, 编译不会报错, 但是运行会报错(unrecognized selector)
    类可以只有实现没有声明,也是可以用的,但是不要这样写


    字符串的长度计算:

    char string[] = "ok"; // o k \0
    // 包含\0
    size_t size = sizeof(string);
    printf("size = %lu\n", size);
        
    // 不包含\0
    size_t length = strlen(string);
    printf("length = %lu\n", length);
        
    // 不包含\0的
    // 计算出来的是个数, 而不是占用的字节数
    NSString *str1 = @"ok";
    NSString *str2 = @"大地瓜";
    NSLog(@"str1_len = %lu", [str1 length]);
    NSLog(@"str2_len = %lu", [str2 length]);
    

    #pragma mark - A 和#pragma mark A区别
    #pragma mark - A会产生分割线 而#pragma mark A没有分割线

    相关文章

      网友评论

          本文标题:Objective-C 碎碎念 1

          本文链接:https://www.haomeiwen.com/subject/stwvrxtx.html