xinrong2019 / xinrong2019.github.io

My Blog
https://xinrong2019.github.io
1 stars 1 forks source link

20190526 IOS开发之OC快速入门 #27

Open xinrong2019 opened 5 years ago

xinrong2019 commented 5 years ago

OC简介

小结:

上面的简介再提炼,只有两点:

1、面向对象

2、兼容C

xinrong2019 commented 5 years ago

OC特性

数据类型: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);

xinrong2019 commented 5 years ago

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
xinrong2019 commented 5 years ago

面向对象简介

对象和类

面向对象的三大特性

如何使用面向对象思维进行编程

xinrong2019 commented 5 years ago

类的结构

image

创建一个类

image

image

image

最后会生成两个文件,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] 
收件人:小明
今天天气不错

总结:

上面主要通过面向对象的思想,简单设计了电话的方法和属性,并实现了内容,并学会了如何在主方法中调用。