本文为大地瓜原创,欢迎知识共享,转载请注明出处。
虽然你不注明出处我也没什么精力和你计较。
作者微信号: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件事情:
- 为类创建出来的对象分配存储空间
- 初始化类创建出来的对象中的属性
- 返回类创建出来的对象对应的地址
类方法和对象方法之间的调用:
- 对象方法中可以直接调用类方法
- 类方法中间接调用对象方法 (还没有对象呢就调用对象方法,强烈不建议这样做)
- 类方法中可以直接调用其它类方法
- 对象方法中可以直接调用对象方法
成员变量不能在定义的时候初始化({}中的写法)
方法可以只有声明没有实现, 编译不会报错, 但是运行会报错(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没有分割线