Open xinrong2019 opened 5 years ago
数据类型:NSInteger(对Integer的封装)、CGFloat(对Float的封装)、BOOL(对布尔类型的封装)、NSObject*(对指针类型的封装)、id(泛型指针,可以表示任意类型)、SEL(选择器数据类型)、Block...
逻辑控制语句: for-in循环
OC方法:对象方法(-),类方法(+)
1、对象方法: - (id)initWithString:(NSString *)string;
id是方法返回值类型
initWithString是方法名称
冒号后面是参数部分
2、类方法:
+ (id) stringWithCString:(const char *)cString
encoding:(NSStringEncoding) enc;
上面的这个类方法是由两个标签组成的方法,方法名叫stringWithCString:encoding:
C的函数: void sum(int numberA,int numberB);
Objective-C和C语言混编,调用C函数
#import <Foundation/Foundation.h>
int sum(int numA,int numB)
{
return numA + numB;
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSLog(@"Hello OC!");
printf("Hello OC!\n");
int result = sum(5, 10);
NSLog(@"%d\n", result);
}
return 0;
}
输出结果:
2019-05-27 18:39:07.773925+0800 OCIntroduce[1458:21083] Hello OC!
Hello OC!
2019-05-27 18:39:07.774068+0800 OCIntroduce[1458:21083] 15
Program ended with exit code: 0
一切从对象出发,以对象为核心
更加符合人类的思维模式
便于维护,扩展性强
对象是客观事物的抽象,指代客观实体
类是对对象的抽血
类用来描述对象,是一系列属性和方法的集合
封装(隐藏具体实现逻辑,对外公开接口)
继承(OC只有单继承)
多态(一个方法可以有多个实现)
确定要解决的问题
根据问题确定对象
使用类来描述对象(思维上)
转换成类的代码
类文件系统由.h和.m文件共同构成
类的结构:类名,属性,方法
创建一个类
最后会生成两个文件,Phone.m,Phone.h,.h文件放声明信息,.m文件放实现。
Phone.h
#import <Foundation/Foundation.h>
@interface Phone : NSObject
{
//属性声明,变量名需要以_开头
@public//默认私有,只有加上@public才能够通过实例访问
CGFloat _screenSize;//屏幕大小
NSString *_color;//机身颜色
CGFloat _memory;//内存大小
}
//方法设计的时候,考虑方法要不要返回类型,要不要传递什么参数
/**
* 打电话给某人
*/
- (void)makeCallToSomeone:(NSString *)someone;
/**
* 发信息给某人
*/
- (void)sendMessage:(NSString *)message toReceiver:(NSString *)receiver;
@end
Phone.m
#import "Phone.h"
@implementation Phone
- (void) makeCallToSomeone:(NSString *) someone
{
NSLog(@"给%@打电话", someone);
}
- (void)sendMessage:(NSString *) message toReceiver:(NSString *) receiver
{
NSLog(@"\n收件人:%@\n%@",receiver,message);
}
- (NSString *)description
{
return [NSString stringWithFormat:@"手机信息:\n屏幕尺寸:%f英寸,机身颜色:%@m,内存大小:%fM",
_screenSize,_color,_memory];
}
@end
main.m
#import <Foundation/Foundation.h>
#import "Phone.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Phone *phone = [Phone new];
phone->_screenSize = 4.7;
phone->_color = @"黑色";
phone->_memory = 1024;
NSLog(@"%@",phone);
[phone makeCallToSomeone:@"小明"];
[phone sendMessage:@"今天天气不错" toReceiver:@"小明"];
}
return 0;
}
运行结果:
2019-05-27 22:31:44.902121+0800 OCIntroduce[2545:143393] 手机信息:
屏幕尺寸:4.700000英寸,机身颜色:黑色m,内存大小:1024.000000M
2019-05-27 22:31:44.902255+0800 OCIntroduce[2545:143393] 给小明打电话
2019-05-27 22:31:44.902269+0800 OCIntroduce[2545:143393]
收件人:小明
今天天气不错
上面主要通过面向对象的思想,简单设计了电话的方法和属性,并实现了内容,并学会了如何在主方法中调用。
OC简介
Objective-C是一门面向对象的编程语言
OC是C语言基础上建立,增加了最小的面向对象语法
OC完全兼容C语言语法(支持OC和C的混编)
小结:
上面的简介再提炼,只有两点:
1、面向对象
2、兼容C