objective-c(六)文件分离,合成存取方法,方法多参数,局部变量,self使用
2012-12-27 11:22
501 查看
今天我们开始学习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一样在,在此不再详述
我建了如图一个文件,当前显示的编辑窗口是主函数窗口,现在我们去建专门放类的文件,点击菜单栏的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一样在,在此不再详述
相关文章推荐
- objective-c(六)文件分离,合成存取方法,方法多参数,局部变量,self使用(未完成)
- LoadRunner(二)LR参数文件多列的使用和局部变量超长的问题解决方法
- Objective-C中的property介绍 (合成存取方法)
- Objective-C中使用不定参数个数的方法调用
- Objective-C 的属性与合成方法使用详解
- objective-c 方法带参数的使用
- Objective-C 合成存取器方法
- 判断数据库启动时使用的参数文件类型的方法
- 对类的进一步说明:包括合成存取方法、多个参数的方法等
- Objective-C之foundation框架中的NSString的使用方法、指针基本用法、读取本地和远程文件
- Objective-C类-Objective-C 合成存取器方法
- Objective-C中属性的简单使用(存取方法)
- Objective-C 的属性与合成方法使用详解
- Objective-c学习笔记(三)oc 多输入参数的方法及协议的使用及变量
- Redis(Windows安装方法与Java调用实例 & 配置文件参数说明 & Java使用Redis所用Jar包 & Redis与Memcached区别 & redis-cli.exe命令及示例)
- Objective-C可变参数方法的定义和使用
- 使用Docker Toolbox 创建v1.12.6版的Docker虚拟机的方法-注意正确使用本地文件 file:参数的路径名
- Spring-property文件配置方法以及如何与工程分离~xml使用${}
- Objective-C 的属性与合成方法使用详解(转载)
- filter在spring框架中使用配置文件参数的一种方法