Objective-C 碎碎念 1

2017-08-15  本文已影响0人  大地瓜123

本文为大地瓜原创,欢迎知识共享,转载请注明出处。
虽然你不注明出处我也没什么精力和你计较。
作者微信号: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没有分割线

上一篇 下一篇

猜你喜欢

热点阅读