美文网首页
实例方法与类方法

实例方法与类方法

作者: 我不白先生 | 来源:发表于2020-09-15 11:36 被阅读0次

1.类与对象(续)
1.1方法
1.1.1实例方法
1.1.1.1是以减号开头的方法(都是实例方法)
1.1.1.2用对象来调用
1.1.1.3在函数体中可以使用指针self
1.1.2类方法
1.1.2.1是以加号开头的方法
1.1.2.2用类名来调用

 TRExample *e = [[TRExample alloc]init];
    [e instanceMethod];
    //[e classMethod];//对象不能调用类方法
    [TRExample classMethod];//类方法只能使用类名调用

1.1.2.3在(类)函数体中指针self 不能被使用,原因是类方法由类名来调用,self指针指向调用那个方法的对象,这样就没有对象可指向。

TRExample.m

#import "TRExample.h"

@implementation TRExample
-(void)instanceMethod
{
    NSLog(@"这是一个实例方法,%@",self.content);
}
+(void)classMethod
{
    NSLog(@"这是一个类方法");
    //NSLog(@"这是一个类方法,%@",self.content);//self在类方法中不能使用,原因是类方法由类名来调用,self指针指向调用那个方法的对象,这样就没有对象可指向。
}

1.1.2.4应用:工厂方法
1.1.2.4.1工厂方法用于生成类的对象
1.1.2.4.2无参工厂方法
1.1.2.4.3带参工厂方法
1.1.2.4.4特例:单例模式
1.1.2.4.4.1是一种特殊的工厂方法
1.1.2.4.4.2特殊在只能生成一个对象
单例模式例子

TRSingleton.h

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface TRSingleton : NSObject
+(id)sharedSingleton;//单例模式的方法名以shared开头,后面跟着没有前缀的类名singleton

@end

NS_ASSUME_NONNULL_END

TRSingleton.m

#import "TRSingleton.h"

@implementation TRSingleton
+(id)sharedSingleton
{
    static TRSingleton *single = nil;
    if(single == nil)
    {
        single = [[TRSingleton alloc] init];
    }
    return single;
}
@end

ViewController.m

#import "ViewController.h"
#import "TRSingleton.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *outputLabel;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    TRSingleton *s1 = [TRSingleton sharedSingleton];
    TRSingleton *s2 = [TRSingleton sharedSingleton];
    TRSingleton *s3 = [TRSingleton sharedSingleton];
    self.outputLabel.text = [NSString stringWithFormat:@"%p\n%p\n%p",s1,s2,s3];
    
}

CMD+F替换

mvc.png

练习小球移动重构!!!

练习小球移动重构!!!

练习小球移动重构!!!

相关文章

  • Swift3.0-实例方法

    实例方法 实例方法是属于某个特定类、结构体或者枚举类型实例的方法。实例方法提供访问和修改实例属性的方法或提供与实例...

  • Swift 中的方法声明

    实例方法 类方法 静态方法 实例方法由实例对象进行调用;类方法和静态方法由类对象进行调用

  • Python 实例方法、类方法和静态方法(转)

    原文链接概括来说,是否与类或者实例进行绑定,这就是实例方法、类方法、静态方法的区别。 在 Python 中,实例方...

  • Swift--方法

    实例方法 静态方法 实例方法 实例方法与实例属性类似,都隶属于枚举、结构体或类的个体(即实例),我们通过实例化这些...

  • 面向对象编程

    主要包括: 基本概念 属性私有化(类的封装) 实例属性与类属性 静态方法、类方法、与实例方法 继承与多态 获取对象...

  • Swift基础-12(方法)

    1.实例方法 实例方法是属于某个特定类、结构体或者枚举类型实例的方法。实例方法提供访问和修改实例属性的方法或提供与...

  • 再论静态方法和类方法

    实例对象可以调用实例方法、类方法、静态方法 类对象只能调用类方法、静态方法

  • Python中的实例方法、静态方法和类方法有什么区别?

    实例方法:接受self参数,并且与类的特定实例相关。 静态方法:使用装饰器 @staticmethod,与特定实例...

  • 类方法与实例方法

    类方法:跟实例无关,可以由class直接调用的方法 实例方法:由某个class的实例调用的方法

  • 类方法与实例方法

    类方法与实例方法的区别 本人刚开始学Objective-C语言,开这个博客,主要是记录我在学习的过程中所遇到一些问...

网友评论

      本文标题:实例方法与类方法

      本文链接:https://www.haomeiwen.com/subject/mjnaektx.html