Objective-C 语言学习总结

       当看书的时候发现什么都重要,都要记住,可是要自己静下心来写一下总结的时候,突然发现没什么好写的,一切似乎都变得容易了,我知道这是在欺骗自己的懒惰行为,过几天肯定会忘记,为了安抚一下自己,还是写一下吧。

       当我们代码写到一定量时,可能会写出很多自己认为不错的函数或者宏,如果以后在其他的项目中我们想使用这些东西,可以使用#import包进来,作用类似于C语言里面的#include,但#import更加优秀,系统自动判断重复导入的问题,而#include需要程序员手动判断。

      +代表类方法,使用类名来调用,必有一个类型为id的参数,-代表实例方法,使用对象来调用。其中self和super不能出现在类方法中,因为类方法的调用者是类本身,而不是对象,如果self和super出现在方法中,就不知道他们代表谁了。

          可以给对象赋值为nil,不可以给基本类型赋值为nil。通过把基本类型强制转换为id类型则可以。

         @private类成员只能在本类中使用

         @package成员可以在该类和该类实现的同一个映像中使用 。同一个映像指的是该类编译后生成的同一个框架或同一个执行文件。

         @protected成员可以在该类或者该类的子类中使用。

         @public成员可以在任意地方使用。

    成员的属性特点:

        assign:指定对属性简单的赋值,引用计数不加1,主要适用于基础数据类型。

       atomic(nonatomic):线程访问是否安全,是否为原子操作(某一时间,该对象只能被一个线程访问,其它线程不能访问),可以避免多线程并发破坏数据的完整性。atomic虽然可以保护数据的完整性,但会造成性能的下降,因此在大多数单线程的操作下,一般都使用的是nonatomic。

      copy:当调用setter方法给成员变量赋值时,会将赋值的对象赋值一个副本,再将该副本赋值给成员变量,防止原成员变量的赋值被修改。常适用的情况是,当前成员变量为可变类型或者其子类为可变类型,被赋值的对象有可能在赋值之后被修改,如果程序不希望该赋值影响setter方法设置的成员变量的值,此时考虑使用copy指示符。例如NSString 类(因为它的子类NSMutableString为可变类)。

      kvc键值编码:体现了动态编译时,格式为【对象 setvalue:属性值 forKey:属性名】。【对象 valueForKey:属性名】。或者是【对象 setValue:属性值 forKeyPath:属性路径(其它对象的属性值)】。

     kvo键值监听:【被监听对象 addObsever:对象(监听器) forKeyPath:监听的属性 options:被监听对象的行为 context:上下文(一般为nil).

     kvo编程的步骤:1.未被监听对象注册监听器。

                                2.从写监听器的observeValueForKeyPath:ofObject:change:context方法。

    多态:objective c的指针类型的变量有两个,一个是编译时的,一个是运行时的,如果编译时的类型和运行时的类型不一致,则就出现了多态。例如A是B的父类,多态发生的情况为A *a = [[B alloc]init]  ;可以看出 A*a说明编译时为父类类型,[[B alloc]init]运行时为子类B的类型。此时出现了多态。假如A中有方法 m,B中有方法m 、n,[ a m]此时的行为为子类B中m的行为。这就是相同类型的变量调用同一个方法时出现不同的行为特征,这就是多态。当a调用n方法时[a n] 应为父类中没有定义n方法,则此行代码就会在编译时出错。

      判断指针变量的实际类型:

                                 1.-(BOOL)isMemberOfClass:class 判断传入的对象是否为该类的实例

                                 2.-(BOOL)isKindOfClass:class 判断传入的对象是否为该类或者该类子类的实例

                                 3.-(BOOL)isSubclassOfClass:class 判断传入的对象是否为该类子类的实例

     == 和isEqual方法:==判断两个对象是否为同一个对象(两个指针类型的变量指向同一个地址),对于基础类型只要值相等就可以了。isEqual是NSObject提供的一个实例的方法,判断标准和==一样,所以用该方法来判断对象时,一般需要从写该方法,由于NSString已经从写了该方法,所以只要两个字符串包含的来那个字符序列一样,即返回真。

      类别(category):为一个类扩展方法,不需要访问原有类的源代码,动态地位现有类添加方法,而且可以类定义模块化。格式为     已有类 (类别名)。

      协议(protocol)与委托(delegate):协议制定了一种规范,实现该协议时必须实现该协议中的某些方法,格式为 @protocol 协议名 <父协议1,父协议2......>

      @optional :可以实现也可以不实现.

      @required:必须要实现的方法。

       暂时就到这里吧,随意总结的,肯定会有很多的错误,只是代表现阶段的理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
城市应急指挥系统是智慧城市建设的重要组成部分,旨在提高城市对突发事件的预防和处置能力。系统背景源于自然灾害和事故灾难频发,如汶川地震和日本大地震等,这些事件造成了巨大的人员伤亡和财产损失。随着城市化进程的加快,应急信息化建设面临信息资源分散、管理标准不统一等问题,需要通过统筹管理和技术创新来解决。 系统的设计思路是通过先进的技术手段,如物联网、射频识别、卫星定位等,构建一个具有强大信息感知和通信能力的网络和平台。这将促进不同部门和层次之间的信息共享、交流和整合,提高城市资源的利用效率,满足城市对各种信息的获取和使用需求。在“十二五”期间,应急信息化工作将依托这些技术,实现动态监控、风险管理、预警以及统一指挥调度。 应急指挥系统的建设目标是实现快速有效的应对各种突发事件,保障人民生命财产安全,减少社会危害和经济损失。系统将包括预测预警、模拟演练、辅助决策、态势分析等功能,以及应急值守、预案管理、GIS应用等基本应用。此外,还包括支撑平台的建设,如接警中心、视频会议、统一通信等基础设施。 系统的实施将涉及到应急网络建设、应急指挥、视频监控、卫星通信等多个方面。通过高度集成的系统,建立统一的信息接收和处理平台,实现多渠道接入和融合指挥调度。此外,还包括应急指挥中心基础平台建设、固定和移动应急指挥通信系统建设,以及应急队伍建设,确保能够迅速响应并有效处置各类突发事件。 项目的意义在于,它不仅是提升灾害监测预报水平和预警能力的重要科技支撑,也是实现预防和减轻重大灾害和事故损失的关键。通过实施城市应急指挥系统,可以加强社会管理和公共服务,构建和谐社会,为打造平安城市提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值