OC学习之核心语法

 

一、点语法

 

用途:

OC当中通过@property和 @synthesize 配对使用来自动生成变量的set和get方法,通过使用点语法可以大大减少我们程序员代码量,也方便学习过其他语言的人上手OC语言

简而言之:

1.减少代码量

2.方便其他语言使用者阅读

用法:

 

#import 
#import "Person.h"
int main(int argc, const char * argv[])
{
    Person *p = [Person new];
//   [p setAge:10];      //用点语法代替就是                p.age = 10;
//   int a = [p age];    //用点语法代替就是                int a = p.age;
 
    NSLog(@"Age is %d",a);
    return 0;
}

#import "Person.h"
int main(int argc, const char * argv[])
{
    Person *p = [Person new];
//   [p setAge:10];      //用点语法代替就是                p.age = 10;
//   int a = [p age];    //用点语法代替就是                int a = p.age;
 
    NSLog(@"Age is %d",a);
    return 0;
}

 

<span style="color:#333333">#import 
#import "Person.h"
int main(int argc, const char * argv[])
{
    Person *p = [Person new];
//   [p setAge:10];      //用点语法代替就是                p.age = 10;
//   int a = [p age];    //用点语法代替就是                int a = p.age;
 
    NSLog(@"Age is %d",a);
    return 0;
}
</span>

 

 

编译器遇到点语法时,会自动展开成其相应的方法

 

 

 

二、@property                                                                                                          

@property可以自动生成某个成员变量的setter和getter声明

比如:

.h文件中

 

@property int  age;   // 这行可以代替下面两行
// -(void) setAge:(int)age;
// -(int)age;

 

?

 

 

 

三、@synthesize                                                                                                       

@synthesize可以在.m文件中自动生成setter和getter的实现,并且会访问该成员变量

比如:

 

@synthesize  int  age = _age;   // 等号左边的age是@synthesize要实现的变量名
                             //  右边的_age是@synthesize要返回的变量名,就是要赋值的变量

 

?

 

如果@synthesize定义一个未知的变量,那么这个变量的默认就是@private类型的

Xcode4.4以后,其实只需要用@property这个关键字就行了,它会自动生成成员变量,会声明和实现getter和setter方法

其缺陷是自动生成的成员变量是@private,子类只能通过geter和setter方法访问,但是可以手动改变成员变量的作用域

 

 


 

四、description                                                                                                          description默认返回的是 <类名:内存地址>

#import <Foundation/Foundation.h>
#import "Person.h"
int main()
{
    Person *p = [[Person alloc] init];
    p.age = 20;
    p.name = @"jack";
    NSLog(@"%@",p);
return 0;
}

 
?

 

此时输出的结果就是:person:内存地址

因为Nslog(@"%@",p);这句会调用p的description方法,而方法默认返回的就是 <类名:内存地址>,所以想要返回自己想要的结果,可以在.m文件中修改description方法的返回值

 

#import "Person.h"
@implementation Person
- (NSString *)description
{
    return [NSString stringWithFormat:@"%d,%@",_age,_name];
}
@end

 

 

 

 

 

?

 

此时NSlog输出的就是年龄和名字了

 

五、SEL                                                                                                                     

 

每个方法都有一个和他相对应的SEL数据,每个SEL数据都相对应着这个方法的地址

也可以理解为SEL就是对方法的一种包装,将方法包装成一个SEL类型的数据,去找对应的方法地址,找到方法地址就可以调用方法

方法调用的过程:

当调用方法的时候,编译器会把方法包装成SEL类型的数据,然后去类里找这个SEL数据相对应的方法的地址,找到之后就会调用这个方法

以上操作是有缓存的

其实调用方法还可以用SEL数据来调用

?

 

带参数的方法调用:

六、NOSLog补充

?
 
?

 

 

// 指针变量地址
    NSLog(@"%p",&p);
    // 对象地址
    NSLog(@"%p",p);
    // <类名:对象地址>
    NSLog(@"%@",p);

 

 

 

 

 

NSLog输出C语言字符的时候 不允许有中文

NSLog(@"%s",str);

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值