LHF Objective-C语法(2)类

Fraction.h (分数)

解释:

1、#import <Foundation/Foundation.h>导入系统头文件    #import "Other.h" 导入普通头文件

2、类变量定义在接口外,类变量只能本类访问

3、花括号里是实例变量  访问修饰符可以是 @public  @protected  @private  

4、默认是@protected  除了实例变量有访问修饰符,其他(类变量,类方法,成员方法)都没有

5、所以方法都是公有的,所以类变量都是私有的

6、- 为成员方法   + 为类方法 

7、大多类方法都是被用来初始化对象的


Fraction.m


1、m方法没有在头文件中声明,也可以调用

2、方法的本地变量(参数,方法中定义的变量)改成缩写了,防止重名。在名称冲突情况下,会隐藏实例变量

1、第5行调用了成员变量denominator(因为是public的) numerator是protected 只能本类,子类访问

2、第6行 调用了类方法,也可以用下边方法调用类方法

[[Fraction class] t];     

Class clazz = [Fraction class];    [clazz t]; clzaa是指针,没有*

3、第7行 m方法,未在头文件中声明,这里也可以调用,相当私有化了

4、第7行 释放了frac 申请的内存空间

5、属性访问器(@property)

//Person.h头文件================================

#import <Foundation/Foundation.h>

@interface Person :NSObject{//创建类

  NSString *name;//属性

  int age;//属性

}

-(void) setName:(NSString*) n;//要吧这3个方法用属性访问器替换掉

-(void) setAge:(int) a;

-(NSString*) name;

-(void) print;

@end

//Person.m实现文件================================

@implementation Person

-(void) setName:(NSString*) n{

        [ n retain];

        [name release];

        [name = n];

}

-(void) setAge:(int) a{

        age = a;

}

-(NSString*) name{

        return name;

}

-(void) print{

        NSLog(@"This is a method...");

}

@end

//main.m================================

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

  Person person ;

  person = [[Person alloc] init];

  [person setName:@"Tom"];

  [person setAge:22];

  [person print];

  [person release];

}

用属性访问器,简化上边代码

参考地址:http://skyoceanone.blog.51cto.com/3483859/687268

//Person.h头文件================================

#import <Foundation/Foundation.h>

@interface Person :NSObject{//创建类

  NSString *name;

  int age;//属性

}

@property (retain) NSString* name;//set get方法简化

@property (assign) int age;//set方法简化

-(void) print;

@end

//Person.m实现文件================================

@implementation Person

@synthesize name;

@synthesize age;

-(void) print{

        NSLog(@"This is a method...");

}

@end

//main.m================================

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

  Person person ;

  person = [[Person alloc] init];

  person.name=@"Tom";

  person.age = 22;

  [person print];

  [person release];

}

@property(属性访问器类型) 实例变量类型 实例变量

@property(nonatomic,assign) int numerator;

@property float count;  //

@property(nonatomic,assign,getter=isMale) BOOL male;

属性访问器类型

    assign / retain / copy                                普通赋值/带计数器的赋值/拷贝

    readonly /readwrite                                    只读(不生成getter方法)/ 读写

    nonatomic                                                  线程不安全(默认线程安全)

    getter/setter                                                给生成的方法起名

另一个例子:






posted @ 2012-02-13 15:32  大鱼大鱼  阅读(192)  评论(0编辑  收藏  举报