zoukankan      html  css  js  c++  java
  • oc37--类工厂方法

    //
    //  Person.h
    
    #import <Foundation/Foundation.h>
    
    @interface Person : NSObject
    
    @property int age;
    @property double width;
    /*
     什么是类工厂方法:
     用于快速创建对象的类方法, 我们称之为类工厂方法
     类工厂方法中主要用于 给对象分配存储空间和初始化这块存储空间
     
     规范:
     1.一定是类方法 +
     2.方法名称以类的名称开头, 首字母小写
     3.一定有返回值, 返回值是id/instancetype
    */
    + (instancetype)person;
    
    + (instancetype)personWithAge:(int)age andWidth:(double)width;
    @end
    //
    //  Person.m
    
    
    #import "Person.h"
    
    @implementation Person
    
    /*
    + (instancetype)person
    {
        Person *p = [Person alloc];
        Person *p1 = [p init];
        return p1;
    }
     */
    + (instancetype)person
    {
        return [[Person alloc] init];
    }
    
    + (instancetype)personWithAge:(int)age andWidth:(double)width
    {
        Person *p = [[Person alloc] init];
        p.age = age;
        p.width = width;
        return p;
    }
    
    @end
    //
    //  main.m
    //  自定义类工厂方法
    
    #import <Foundation/Foundation.h>
    #import "Person.h"
    
    int main(int argc, const char * argv[]) {
    
        Person *p = [[Person alloc] init];
        Person *p12  = [Person person];
        p12.age = 30;
    
        Person *p1 = [Person personWithAge:30 andWidth:2.2];
        NSLog(@"age = %i", p1.age);
        /*
         自定义类工厂方法是苹果的一个规范(苹果就是这么写的), 一般情况下, 我们会给一个类提供自定义构造方法和自定义类工厂方法用于创建一个对象
         */
        
        
        /*
        NSString *s1 = [[NSString alloc] init];
        NSString *s2 = [NSString string];
        
        NSString *s3 = [[NSString alloc] initWithString: @"ss"];
        NSString *s4 = [NSString stringWithString:<#(NSString *)#>];
        
        NSArray *a1 = [[NSArray alloc] init];
        NSArray *a2 = [NSArray array];
        NSArray *a3 = [NSArray alloc] initWithObjects:{1,2,3}, nil
        NSArray *a4 = [NSArray arrayWithObjects:<#(id), ...#>, nil]
        */
        return 0;
    }
  • 相关阅读:
    Selenium+java
    小白学习安全测试(一)——Http协议基础
    解决chrome运行报错unknown error: cannot get automation extension
    Eclipse 中 不能创建 Dynamic web project
    Jmeter遇到Connection reset by peer的解决方法
    用Java检测远程主机是否能被连接
    Java 连接远程Linux 服务器执行 shell 脚本查看 CPU、内存、硬盘信息
    jenkins的svn路径中文问题
    MySql的存储引擎介绍
    Netty SSL性能调优
  • 原文地址:https://www.cnblogs.com/yaowen/p/7417848.html
Copyright © 2011-2022 走看看