Object-C学习笔记

简介:
这是一门面向对象编程:

面向对象快速总结:
最重要的核心是:对象把状态和行为包含在一个class里面

.m是Object-C已编译类的后缀

What is ios?

ios系统的Unix操作系统,基于BSD的Unix版本

Cocoa Touch

触控应用层,是UI层,包括:

  • Multi-Touch
  • Alerts
  • Core Modtion
  • Web View
  • View Hierarchy
  • Map Kit
  • Localization
  • Image Picker
  • Controls
  • Camera

为什么叫Cocoa Touch呢?

这里的API最初是为了Mac OS X开发的,它叫Cocoa,之后当它们被适用于IOS,很多API能够在两个平台之间共享,Cocoa Touch显然是Cocoa的触控版本。

Media

媒体层,包括:

  • Core Audio
  • JPEG,PND, TIFF
  • OpenAL
  • PDF
  • Audio Mixing
  • Quartz(2D)
  • Audio Rccording
  • Core Animation
  • Video Playback
  • OpenGL ES

Core Services

核心服务层,是面向对象的一层,包括:

  • Collections()
  • Core Location
  • Address Book
  • Net Services
  • Threading
  • File Access
  • Preferences
  • SQLite
  • URL utilities

Core OS:

核心操作系统层,是很接近硬件的一层,大多数API都是用C写的,包括:

  • OSX kernel
  • Power Management(电源管理)
  • Mach 3.0
  • Keychain Access
  • BSD
  • Certificates(证书)
  • Sockets(套接字)
  • File System(文件管理)
  • Security(安全管理)
  • Bonjour(一种网络)

平台开发工具篇

Tools:

  • Xcode
  • Instruments

Language

  • Object-C:它使用方括号和冒号,消息调用没有圆括号,参数不是放在圆括号里。Object-C是C语言的严格超集,C中可以做的事情,Object-C里面也可以做。

  • Object-C和Java,C++不同的一个很大特性是Properties(属性):属性是访问实例变量的方式。

  • 属性实际上是一个setter和一个getter方法,所有的实例变量的访问都是如此。通过setter方法设置值,通过getter方法获取值。

  • .h是一个公共的API,而.m是一个私有的实现。

  • 在公共API中,必须说明父类是谁,你不能将父类保密。

  • 在.h文件中,格式如下:@interface 类名(这必须和文件名一致): NSObject,底部有@end。其中,NSObject是Fundation框架中的一个类,它是IOS每一个类的基类。换句话说,它是每一个类最终的父类,一切都是从NSObject中继承。通常我们不会导入import <Fundation/NSObject.h>,而是导入import <Fundation/Fundation.h>整个框架,从ios7开始可以使用import Fundation;意味着我们可以使用Fundation中的所有公共类,因为向上兼容,所以<Fundation/Fundation.h>还可以使用。

  • 在.m文件中,格式如下:@implementation 类名(这必须和文件名一致),底部有@end。这里不需要指定父类, 因为它只需要指定一次,而它是公共的,所以是在头文件中。

  • 至于如何声明一个属性?@property (strong) NSString *content s,其中@property会声明每一个contents所需要的空间,在OC中所有的对象都在堆中,其中,(堆:也就是分配闲置内存的地方where allocate free memory,所有的对象都在这里,OC会替你管理所有的这些存储)strong:属性是强的, (所有的指针的 属性,要么是强,要么是弱,OC知道如处理内存和堆)只要一个对象被强引用,会被引用计数。OC中会对每一个指向堆中对象的强指针进行追踪,只要有一个强指针存在,它就会把它留在堆中,只有没有强指针存在,它才会从堆中释放内存,立即释放。这个在OC中叫自动引用计数,weak,属性的弱的,weak指针会告诉OC有一个指针指向堆中的这个内存,只要还有强指针指向它,就将它留在内存当中,只要不在有强指针指向它,内存将立刻被释放,此时的弱指针会被置为nil,nil表示这个指针不再指向任何东西。

  • @property (strong, nonatomic) NSString *contents; nonatomic的意思是声明同该属性一同的setter和getter方法不是线程安全的,你不能有两个线程,同时尝试设置改属性,因为IOS中的多线程不是多线程在设置的一个对象,我们通常有一个运行在另外一个线程的一组对象,例如你的模型,nonatomic通常用于多线程。

      @synthesize contents = _contents;
      - (NSString *)contents
      {
          return _contents;
      }
      - (void)setContents:(NSString *)contents
      {
          _contents = contents;
      }
    
  • _contents是实例化变量的名字,属性contents将存储在这里 ,"-"负号这里表示这是一个方法,synthesize将为实力创建空间

  • C语言的原始类型没有存储在堆中。

  • OC中,.点符号只用于properties,这是调用setter和getter方法,使用点符号。 根据左值和右值来分别调用setter和getter方法。self也就是这段代码正在起作用的实例,

  • ==等号比较的是指针,而不是比较指针所指的内容。

FrameWork(框架)

常见的有:

  • Fundation框架,所有的核心服务都在这里,例如数字,字典,所有这些
  • UIKit框架
  • Core Data框架
  • Map kit框架,地图
  • Core Motion框架,陀螺仪和加速计

Design Strategies(设计策略)

MVC(Model,View,Controller):是一种将应用中的所有类组织起来的策略,这里我们会将所有的类归到三块中,也就是模型,控制器, 视图

控制器:将模型数据用到视图当中,然后显示到屏幕上

那么,怎么知道哪个类是属于哪一块呢?

实际上,模型实际考虑的是“什么”的问题,程序是什么,模型是独立于UI存在,控制器控制如何呈现在屏幕上。而视图是控制器要使用的类,

面向对象中协议:协议是一种同另一种对象通信的盲方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值