/*
java转iOS已有一段时间了,但是还没有详细探究过Objective-C的细节,细节决定成败,
所以今天开始写博客来详细探究OC,无论容易或复杂都要过一编,查漏补缺.
*/
/*
编译预处理指令
1、
#import:#include一样都是编译预处理指令
#import 功能与#include一样也是把文件内容拷贝到#import指令所在位置
#import <> 与 #include<> 是用来包含系统的头文件的
#import "" 与 #include “” 是用来包含自己项目中的头文件
#import 是#include 升级版,自动防止文件重复包含
2、
Foundation: 就是Foundation框架
3、
@autoreleasepool 就是内存管理的一个东西(了解)
4、NSLog:Foundation框架提供的用于日志输出的函数
NSLog与printf对比
1、printf 是C语言提供的,它在stdio.h的头文件中
2、NSLog 是Foundation框架提供的,NSObjCRuntime.h
3、NSLog 包含日志输出的日期,以及对应的应用程序
4、NSLog 自动换行,在末尾\n是无效的
5、NSLog 中的格式字符串不是普通C语言字符串,NSString对象
@"" 它是一个NSString对象的字面量表示
6、printf中所有占位符在OC中都是支持的
7、 NSLog新增了格式符 %@ 用于输出的对象的
在main函数中,renturn 0;表示程序正常退出了
*/
/OC中创建类
//OC中一个类包含两个部分
//声明和实现
/*
类的声明必须以@interface开头,必以@end结尾
类的实现必须以@implementation开头,必以@end结尾
NSObject:基类,所有类的祖先类
: NSObject 作用是让Person类具有创建对象的能力
Person
注意点:如果一个类中只有声明没有实现,那么这个类在链接的就报错,是不可创建成功
OC中方法声明的格式
无形参: 方法类型符 (返回值类型) 方法名称
对象方法:是属于对象的,只能通过对象调用,他的 方法类型符 是 -
注意点:
1、成员的声明必须放在@interface 与 @end之间{}中,不能放在大括号外
2、方法的声明必须放在{} 与@end之间
3、@implementation 作用就是用来实现方法的
4、如果你类只有声明没有实现那么链接就会报错
*/
/方法是属于对象或类的,函数全局共享的
// 函数的调用只需要根据函数的名称就可以调用
//方法是属于对象或类的,所以必须在类中声明和实现
//OC中的类的定义中可以没有类的声明,但是在开发中必须要写类的声明
//对象方法必须通过对象调用
//相同点:都是封装特定的功能代码
//1、类的声明和实现不能嵌套的,声明中也不能嵌套其他声明,实现也不能嵌套其他的实现
//2、类的声明中仅仅能放成员变量和方法的声明
//3、成员变量一定要声明在大括号中,
//4、不能在声明的时候给变量赋值
//5、方法不可以写大括号中
//6、成员变量不能定义在大括号外部
//7、方法定义一定要在大括号与@end之间
//8、对象方法只能同多对象调用,不可以使用C语言的方式进行调用
//9、外部不能识别定义在@interface 与 @end 函数,但是可以放在@implementation 与 @end
//10、函数定义在.m文件的任何位置,但是一般情况下不会把定义在类的声明或实现中
//11、实现可以放在主调函数后面,只要声明放在在前就可以了
//11、@interface 或 @implementation 不要忘记 @end