382次
浏览数
关于Objective-C语法之类以及对象
2012-07-25 20:43:14 分类:默认分类
1、类与法子
下图中是一段的类声名的语法表示,声相识一个叫做 MyClass
的类,它秉持于根类:NSObject。(根类可以或许被全数的别的类直接或间接承继。)
下图是一个门径的语法展现,门径的声明由如下几个部份造成:方法类型标识符,返回类型,一个或多个门径签名枢纽字,以及参数类型和称说。
2、成立类
1.1、新建Single View app 模版工程,按Co妹妹and + N 新建文件,建立类Student ,秉承与NSObject
1.2、生成student.h 和student.m
#import <Foundation/Foundation.h>@interface Student : NSObject@end
#import "Student.h"@implementation Student@end
1.3、在头文件里增进类成员变量与法子
@interface
#import <Foundation/Foundation.h>@interface Student : NSObject{ NSString *studentName; NSInteger age;}-(void) printInfo;-(void) setStudentName: (NSString*) name;-(void) setAge: (NSInteger) age;-(NSString*) studentName;-(NSInteger) age;@end
- @interface 类的初阶的标识符号 ,比方Java 或 C 说话中的Class
- @end 类的结束标记
- 秉持类的方式:Class:Parent,如上代码Student:NSObject
- 成员变量在@interface Class: Parent { .... }之间
- 成员变量默认的造访权限是protected。
- 类成员法子在成员变量负面,样式是:: scope (returnType) methodName: (parameter1Type) parameter1Name;
- scope指得是类方法或实例化方法。类办法用+号匹面,实例化门径用 -号入手下手。
1.4、实现类方式
@implementation
#import "Student.h"@implementation Student-(void) printInfo{ NSLog(@"姓名:%@ 年纪:%d岁",studentName,studentAge);}-(void) setStudentName: (NSString*) name{ studentName = name;}-(void) setAge: (NSInteger) age{ studentAge = age;}-(NSString*) studentName{ return studentName;}-(NSInteger) age{ return studentAge;}@end
1.5、在View中建树并初始化,挪用方法。
- (void)viewDidLoad{ [super viewDidLoad]; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; Student *student = [[Student alloc]init]; [student setStudentName:@"张三"]; [student setAge:10]; [student printInfo]; [pool release];}
- Sutdent *student = [[Sutdent alloc] init]; 这行代码含有几个需要意思
- [Student alloc]调用Student的类法子,这相同于分拨内存,
- [object init]是构成函数调用,初始类对象的成员变量。
姓名:张三 岁数:10岁
2、类法子运用多个参数
2.1增加一个多参数的方式和实现
....-(void) setNameAndAge:(NSString*) name setAge:(NSInteger) age;....
....-(void) setNameAndAge:(NSString*) name setAge:(NSInteger) age{ studentName = name; studentAge = age;}....
2.2挪用
- (void)viewDidLoad{ [super viewDidLoad]; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; Student *student = [[Student alloc]init]; [student setNameAndAge:@"李四" setAge:20]; [student printInfo]; [student release]; [pool release];}打印终于:
姓名:李四 年齿:20岁
3、自界说构造函数
3.1申明和实现结构函数
....-(Student*) initWithNameAndAge:(NSString*) name setAge:(NSInteger) age;....
....-(Student*) initWithNameAndAge:(NSString*) name setAge:(NSInteger) age{ self = [super init]; if ( self ) { [self setNameAndAge:name setAge:age]; } return self;}....
-(id)init 这个法子用于类的初始化竖立,每一个类在创建的时候需要挪用init门径,使用父类的init
法子失掉了self,这便大约做一些子类初始化的工作
3.2运用自界说结构函数:
- (void)viewDidLoad{ [super viewDidLoad]; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; Student *student = [[Student alloc]initWithNameAndAge:@"rongfzh" setAge:6]; [student printInfo]; [student release]; [pool release];}
上一篇:
古今利器——地图
下一篇: 没有了
下一篇: 没有了