黑马程序员------OC基础语法的使用

来源:互联网 发布:蜘蛛侠电影有哪些知乎 编辑:程序博客网 时间:2024/05/16 10:38

  

 ——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-


类的使用语法

在不改变原来类模型的前提下,给类扩充方法,除了可以利用继承特性设计一个子类外,还可以通过设置分类来完成。 

分类的格式:

分类的声明
@interface 类名(分类名称)
......
@end


分类的实现:
@implementation 类名(分类名称)
......
@end


示例1:
#import <Foundation/Foundation.h>
@interface Person : NSObject   //类的申明

@property int age;
@property NSString *name;

@property double height;

- (void)run;

- (void)jump;

@end


@implementation Person  //类的实现

- (void)run
{
    NSLog(@"跑起来了");
}
- (void)jump
{
    NSLog(@"跳起来了");
}
@end


@interface Person (Liyi)  //声明Person的分类,取名为LiYi

- (void)shoot;//在分类中给Person扩充一个方法shoot

@end


@implementation Person(LiYi)  // 类的实现

- (void)shoot//实现这个扩充的方法
{
   NSLog(@"LiYi shoot");
}
@end

int main()
{
    Person *per = [Person new];//创建一个Person对象
    [per shoot];  //per调用分类中扩充的方法shoot

    return 0;
}


该实例运行的结构为    LiYi shoot


使用类的好处

1、可以将一个大的类分为多模块的开发

2、多模块的开发有利益团队开发,提高效率。


例如:


模块一:

#import <Foundation/Foundation.h>
#import "Grab.h"
@interface Person : NSObject<Grab>
@property(nonatomic, strong)NSString *name;

@property(nonatomic, assign)int age;
@property(nonatomic, assign)int height;

- (void)jump;
- (void)run;

@end


模块二:

#import <Foundation/Foundation.h>
#import "Person.h"
int main()       //  主函数的调用,分模块的调用
{
    id<Grab> obj = [Person new];
    [obj potholing];
    return 0;
}



模块三:
#import "Person.h"  //  声明的文件调用
@implementation Person  //类的实现
- (void)jump
{
    NSLog(@"跳跃");
}
- (void)run
{
    NSLog(@"奔跑");
}
- (void)potholing
{
    NSLog(@"开挖掘机挖坑");
}
@end


以上都是运用多分类模块,由主函数主类的调用


类的本质


其实类也是一个对象,是Class类型的对象,简称“类对象”。类就是以类对象的形式存储在内存中的。 

 
+load方法:在程序启动的时候会加载所有的类和分类,并自动调用所有类和分类的+load方法,先加载父类再加载子类也就是先调用父

类的+load方法再调用子类的+load方法。此外先加载原始类再加载子类。不管程序运行过程中有没有用到这个类,都会调用+load加

载。 
+initialize方法:在第一次使用某个类时(比如创建对象等),就会调用一次+initialize方法,一个类只会调用一次+initialize方

法,先调用父类的再调用子类的


获取类对象的方法:
方法1:
Class c = [Person class];

方法2:

Person *p = [Person new];  //  运用指针传地址

Class c = [p class];


简单的代码块的运用输出:

我们在打印输出某个类,通常会使用NSLog 函数来输出 和“%@”格式转换符,返回值一个整型,输出自己默认返回


#import <Foundation/Foundation.h>
int main()
{
    int a = 5, b = 9;
    int (^Sum)(int, int) = ^(int x, int y){
        return x + y;
    };
    int sum = Sum(a, b);
    NSLog(@"sum = %@", sum);
    return 0;
}

示例13展示了代码块的简单应用,运行结果是:
sum = 14




0 0
原创粉丝点击