objective-c(六)文件分离,合成存取方法,方法多参数,局部变量,self使用

    今天我们开始学习objective-c面向对象的第二个基础部分,类的一些基本操作,上篇中演示的程序,主函数以及调用的类接口以及实现部分都在同一个文件中,假如类多了之后这绝对不是一个好的解决办法,这篇我们就来说说如何分离:

我建了如图一个文件,当前显示的编辑窗口是主函数窗口,现在我们去建专门放类的文件,点击菜单栏的file,进去点new,选择file就进入下面这个界面:

选择objective-c class文件,然后next进入下面这个界面

在这个界面填入类名以及父类名,默认NSObject类,因为这是祖宗类,然后next,就进入把新创建的文件放在哪个文件夹下,在group中选择即可,然后文件夹目录就自动多了两个文件

我们看到生成一个后缀为.h一个为.m的文件,分别打开,我们就会看到接口部分放在.h文件中,实现部分放在.m文件里,这样就分离类成功了,后面的例子中我们会用到。

如果有过java开发的就应该用到过eclipse吧,多么强大的一个开发工具啊,还记得里面的getset方法可以自动生成吗?那是多么方便啊,xcode其实也很强大,我们也可以合成getset的方法,下面我就一步步讲一下:

例如,我们要为test类添加a属性和b属性,a属性的getset方法自动生成,b还用原来的方法,然后大家可以看到效果:

interface部分:

#import <Foundation/Foundation.h>

@interface Test : NSObject
@property int a;
@end

 

implemention部分

#import "Test.h"

@implementation Test
{
    int b;
}
@synthesize a;

@end

 

main部分

#import <Foundation/Foundation.h>
#import "Test.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        Test *test = [[Test alloc] init];
        [test setA:5];
        NSLog(@"%i",[test a]);
        [test setB:4];
    }
    return 0;
}

看到结果如图:

总结一下,

    (1)要在其他地方调用一个类需要import进去,所以main前面有这么一句#import "Test.h",引入自己的类是双引号,引入系统的类是<>

    (2)a可以自动合成getset方法步骤1在interface部分:@property int a;2在implemention部分@synthesize a;,然后我们在主函数里面调用getset方法时,相应的方法就会自动提示出来了,b还是原来的方法,我强制使用setB就报了上面的错

 

会了getset方法自动合成,我们就开始学习多参数方法,前面用的方法要么是没有参数的,要么是只有一个参数,这次我们写个方法实现一次为a和b都赋值

在interface中

#import <Foundation/Foundation.h>

@interface Test : NSObject
@property int a;
-(void) setTo:(int) a over:(int) b;
-(void) setB:(int) x;
-(int) b;
@end

implementin部分

#import "Test.h"

@implementation Test
{
    int b;
}
@synthesize a;

-(void) setB:(int)x{
    b = x;
}
-(int) b{
    return b;
}
-(void) setTo:(int)x over:(int)z{
    a = x;
    b = z;
}
@end

main部分

#import <Foundation/Foundation.h>
#import "Test.h"

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        Test *test = [[Test alloc] init];
        [test setTo:3 over:4];
        NSLog(@"%i and %i",[test a],[test b]);
    }
    return 0;
}

这种大家一看就清楚了吧

上午本来计划写来,把未完成都去掉了,有点事耽搁了,对不住大家了,

我来说说局部变量,局部变量是c语言的基本数据类型,所以使用之前必须得赋值,这个我就不细说了,有编程经验到人都会用

我在这主要说的是static的使用,大家一定会疑惑static和局部变量有什么关系,因为java中的static都是成员变量,这就是objective-c的不同,objective-c中static可以定义在单个方法中也可以定义在全局中,用途是不同的,定义在方法中是记录该方法执行的次数,定义在全局中是记录该类执行的次数,下面用代码解释一下。

定义在方法中:


看到了把,我们调用a方法三次,count值自动增加

下面我们看看定义全局static


以上就是全局static的使用方法


其实objective-c也提供了java中this的使用方法只不过不叫this,叫self,写过php面向对象的人就知道这,因为php中也是self,用法和javathis一样在,在此不再详述

 


 

 

 

发布了36 篇原创文章 · 获赞 2 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章