漫步IOS--OC编程初始

C作为学习Object-C(以后简称OC)的前缀已经差不多了,现在开始来直接上手OC。

还是在Xcode环境中直接新建一个命令行工程,类型选择FUNDATION。然后其他的就和原先一样了。

1 数据类型的变化

因为语言的历史关系吧,OC中大部分类和变量都是带NS开头的。例如:NSLog,NSString,NSInteger等等。按住command点变量可以和eclipse一样跟踪代码的定义,查看一下数据类型的具体定义。点进去发现,其实只是用typedef对基本数据类型进行了别名定义而已。但是,在查看定义的时候可以看出,在别名定义的时候,将一些数据类型进行了合并.

typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;

上面的代码看出将long和int进行了合并,都归为NSInteger了。

再一个是字符串,终于可以像java那样直接一个数据类型接收了,而不用再去考虑数组的存储了。用的数据类型就是NSString。

另外值得注意的是,在字符串的赋值方面,语法和Java的有些不一样,如下。

NSString string1 = @"这是一句话";
不过所幸的是至少可以直接字符串赋值了,而不用再去非得用一个函数才能进行字符串赋值了。

还有一个就是,在OC中对于所有数据类型的命名,都在前面加一个下划线。这不是硬性规定,但是默认俗称的约定。而且通常也非基本数据类型名字前面加*,这个好像在XCode中不写是会报错的。

2 类的编写语法

OC中建议的是一个类写一个文件,每一个类分为接口文件(即.h头文件)和实现文件(即.m实现文件)两个,类接口文件以@interface开头,以@end结束。具体代码:

#import <Foundation/Foundation.h>

@interface Class1 : NSObject{
    @public
    NSString *_name;
}

- (void) defindSelf;

- (void) introduceSelf;

@end

这里得说一下,上面的public就是公有的,如果不写就是默认的protected,即实例化的对象是不能访问的。所以这里如果想在实例里使用,这里就必须加上@public。

下面是方法的定义。 ‘-’ 表示该方法是实例方法,‘+’ 表示该方法是类方法,类似Java的static方法,即要通过类名进行调用,而不是通过实例调用。

类实现文件@implementation开始,以@end结束。具体代码:

#import "Class1.h"

@implementation Class1

- (instancetype) init {
    _name = @"类1";
    return self;
}

- (void) defindSelf{
    NSLog(@"这是一个自定义方法");
}

- (void) introduceSelf{
    NSLog(@"我是%@",_name);
}

@end
类中的方法调用(暂不提get和set方法)

通过中括号进行调用,里面第一个参数是类实例,第二个参数是方法名。

Class1  *c1 = [[Class1 alloc] init];
[c1 defindSelf];


3 工程文件

在Xcode中新建工程,会发现一个文件,删了报错,不删怪别扭的,里面的代码还很少,很熟悉,就是supporting Files。如下截图


就是如上图的.pch后缀的文件。其实这个文件是一个全局宏定义文件,在这里写的宏定义在工程的所有文件都可以看见。而且不用单独的去引入文件。

这就带来一个比较好的东西。安卓sdk一个很大的优势就在于他的松散耦合,资源抽离。我们可以把一些常用的字符串,一些重复使用的界面UI的属性参数,等等吧,在这里一起定义了,然后界面只是一个简单地调用。因为宏定义只是一个编译前的简单替换,所以我们可以通过把数据写在这里实现批量的替换。例如,在一个界面中写了很多的TextUI,需要设置字体,如果需求改了,要从新设置字体,挨个改起来很费时费力,而如此只需在这个宏定义里改一下即可。只是这样也要注意,尽量不要把太多的调用都写成一个数据,要不这个优点就反而成了鸡肋了。

4 C语言部分

结构体可以直接赋值,利用此特性,可以将数组直接放在结构体内,然后通过结构体直接赋值。


结构体内存存储
1 按照最大分配
2 对齐原则

指针就是地址。

extern int cardNum[]; 
关键字的意思是去文件之外找全局变量。

静态变量只初始化一次,如果没初始值,默认为0,只有程序退出才释放。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值