博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类和对象 (Object-C语言)
阅读量:5035 次
发布时间:2019-06-12

本文共 4051 字,大约阅读时间需要 13 分钟。

类和对象

 

 自动释放池

    @autoreleasepool

C语言

   printf("Hello, World!%d\n", a); 

 OC中的打印函数

  NSLog(@"Hello, World!%d", a); NSLog(@"你好!"); 

 NSLog比起printf增加的功能

        1.自动换行

        2.附加其他的信息(日期, 工程名)

        : NSLog比较消耗资源, 程序上传APPStore之前, 需要屏蔽掉NSLog

        

        C语言的字符串 "iPhone"

        OC中的字符串前要加@, @"iPhone" 

        乔布斯在NEXT公司时, 公司研发了一个NEXTStep的工具包, 后来乔布斯回到苹果, 也把这个工具包带回苹果, 集成到苹果的开发工具中, 所以iOS开发中很多都是以NS作为前缀

        

        C语言和OC(Objective-C, Objc)的区别

        1.OCC语言的超集, OC是在C的基础上做的扩展, C语言的语法OC中都支持

        2.OC扩充了面向对象的编程思想

        3.OC是一门运行时语言, 编译时只检查语法, 运行时才能决定(比如执行方法, 数据类型等)

        4.OC类库非常丰富

        

        面向对象编程OOP(Object Oriented Programming)

        面向对象编程的核心: , 对象

        面向对象编程的三大特性: 封装, 继承, 多态

        

        :具有相同特征和行为的事物的抽象

        对象: 万事万物皆对象

        

        类与对象的关系

        1.类是抽象的, 对象是具体的

        2.对象是类的实例

        3.类是对象的类型

        如何区分类和对象?

 

        看有没有具体到某个事物, 具体就是对象, 不具体就是类

         OC中如何创建一个类?

 

        1.cmd + n, 创建文件, CocoaTouch Class为模板创建一对文件(*.h *.m)

        2.*.h中写实例变量方法声明

        3.*.m中写方法实现  

        通过类来生成对象

        1.引入头文件

        2.开辟内存空间

        3.初始化

 OC中如何创建一个类?

        汽车类

        特征品牌价格轮子数量

        行为

 Car.h

//@interface 类名 : 父类名@interface Car : NSObject{    //实例变量 - 类的特征//    char brand[20];//    float price;//    int number;        //实例变量能在外部访问, 需要加public    @public        //NSString: OC中字符串类型    NSString *_brand;    //CGFloat: OC中的浮点型, 在64位下是double, 在32位下是float    CGFloat _price;    //NSInteger: OC中的整型, 在64位下是long, 在32位下是int    NSInteger _number;        //注: 基本数据类型(char, short, int, long, float, double, BOOL), 不加*    //实例变量命名以下划线开头}
//方法 - 类的行为//C语言的函数声明//void run();//OC的方法声明//-/+: 决定方法由谁调用, -: 对象调用;  +: 类调用//(void): 返回值类型//run: 方法名- (void)run;- (void)stop;

Car.m

//@implementation - @end: 实现部分@implementation Car//方法实现- (void)run{    //在类的内部, 通过实例变量名, 访问实例变量//    NSLog(@"%@汽车跑起来了!", _brand);    NSLog(@"%ld个轮子的%@汽车, 竟然跑起来了!", _number, _brand);}- (void)stop{    NSLog(@"%@根本停不下来!", _brand);}@end

main.m

 

 OC中调用方法使用[]

 

//类 *对象 =//        Car *car = [Car alloc];//使用alloc开辟内存空间//        [car init];//使用init初始化(把内存中的内存清空)        Car *car = [[Car alloc] init];                //为实例变量赋值        car->_brand = @"奇瑞";        car->_price = 2000.0;        car->_number = 3;                //打印实例变量的值        NSLog(@"品牌: %@", car->_brand);        NSLog(@"价格:%.2lf", car->_price);        NSLog(@"轮子数量:%ld", car->_number);                //调用方法        //格式: [类/对象 方法名];        [car run];        [car stop];                        //定义一个汽车对象        Car *car2 = [[Car alloc] init];        car2->_brand = @"奥迪";        car2->_price = 3000.0;        car2->_number = 4;                NSLog(@"品牌: %@ 价格: %.2lf 轮子数量: %ld", car2->_brand, car2->_price, car2->_number);                [car2 run];        [car2 stop];

        手机类phone

        特征: 颜色, 系统

        行为: 打电话, 发短信

 Phone.h

@interface Person : NSObject {    @public    NSString *_name;}- (void)say:(NSString *)content;@end

Phone.m

@implementation Person- (void)say:(NSString *)content {    NSLog(@"%@: %@", _name, content);}@end

main.m

Phone *phone = [[Phone alloc] init];        phone->_color = @"土豪金";        phone->_system = @"iOS";        NSLog(@"颜色: %@ 系统: %@", phone->_color, phone->_system);        [phone call];        [phone sendMessage];        [phone callToSomeone:@"Mr.Wang"];        [phone sendMessageToSomeone:@"Mr.Zhang"];

        面向过程解决问题的思路

        1.分析解决问题的步骤

        2.把解决步骤形成函数

        3.依次调用函数

        

        面向对象解决问题的思路

        1.分析问题中出现的对象

        2.分析对象的特征和行为, 把具有相同特征的行为和对象归纳成类

        3.通过类创建对象

        4.通过对象去解决问题

 

去逛夜市,我:这个怎么卖。摊主:380这个是真金的。我:10块。摊主:看清楚啊这个是真金。我:10块。摊主:好吧!看你那么执着卖你吧。我:我不买,就练练砍价。摊主:你别跑,你别跑,劳资砍死你

*.h

@interface People : NSObject {    @public    NSString *_name;}- (void)say:(NSString *)content;- (void)write:(NSString *)content;@end

*.m

@implementation People- (void)say:(NSString *)content {    NSLog(@"%@说: %@", _name, content);}- (void)write:(NSString *)content {    NSLog(@"%@写下: %@", _name, content);}@end

main.m

Person *me = [[Person alloc] init];        me->_name = @"我";        Person *boss = [[Person alloc] init];        boss->_name = @"摊主";                [me say:@"这个怎么卖。"];        [boss say:@"380这个是真金的。"];        [me say:@"10块。"];        [boss say:@"看清楚啊这个是真金。"];        [me say:@"10块。"];        [boss say:@"好吧!看你那么执着卖你吧。"];        [me say:@"我不买,就练练砍价。"];        [boss say:@"你别跑,你别跑,劳资砍死你!"];

 

    文件名和类名没有关系, 保持一致是为了方便管理

    一对文件中可以写多个类, 但建议一堆文件只写一个类, 同样也是为了方便管理

 

 

转载于:https://www.cnblogs.com/OrangesChen/p/4844939.html

你可能感兴趣的文章
ArchLinux安装开源VMware Tools
查看>>
DB2 锁升级示例1
查看>>
16.RDD实战
查看>>
MainFrame知识小结(20120210)—dfsort/syncsort中的数据类型
查看>>
D - Flip tile
查看>>
Java连接RabbitMQ之创建连接
查看>>
开户vim编程之--cscope支持
查看>>
python数据类型图解
查看>>
C#微信登录-手机网站APP应用
查看>>
HTML5实践 -- iPhone Safari Viewport Scaling Bug
查看>>
一位数据挖掘成功人士 给 数据挖掘在读研究生 的建议
查看>>
Python3.6.0安装
查看>>
hdu1049
查看>>
H5项目常见问题及注意事项
查看>>
索尼(SONY) SVE1512S7C 把WIN8降成WIN7图文教程
查看>>
时间模块 && time datetime
查看>>
jquery自动生成二维码
查看>>
spring回滚数据
查看>>
新浪分享API应用的开发
查看>>
美国专利
查看>>