建立一个类:NewClass
NewClass.h
#import <Foundation/Foundation.h>
@interface NewClass : NSObject
/*
便利构造器
@param member 属性member参数
@return 对象
- (instancetype)initWithMember:(NSString *)member;
类方法 便利构造器
@param member 属性member
@return 对象
+ (NewClass *)newObjectWithMember:(NSString *)member;
类方法创建对象
@return 对象
+ (NewClass *)newObject;
/*
实例方法
1.使用“_”
2.调用者 -> 本类的对象
3.方法中是否可以使用本类的属性:是
*/
- (void)objectMethod;
/*
类方法:1.使用“+”
2.调用者 -> 本类的类名
3.方法中是否可以使用本类的属性:否
*/
+ (void)classMethod;
@end
*/
NewClass.m
#import "NewClass.h"
@implementation NewClass
- (instancetype)initWithMember:(NSString *)member
{
if(self = [super init])
{
_member = member;
}
return self;
}
+ (NewClass *)newObjectWithMember:(NSString *)member
{
//1.如果实现了 -initWithmember:
// NewClass *object = [[NewClass alloc]initWithMember:member];
//2.
NewClass *object = [[NewClass alloc]init];
object.member = member;
return object;
}
//类方法初始化
+ (NewClass *)newObject
{
NewClass *object = [[NewClass alloc]init];
return object;
}
- (void)objectMethod
{
NSLog(@"实例方法实现:由于有一个具体的对象 所以可以使用对象的属性:%@",_member);
}
+ (void)classMethod
{
NSLog(@"类方法的实现:由于是用类名调用,没有具体对象,所以不能使用属性");
}
@end
main.m
#import <Foundation/Foundation.h>
#import "NewClass.h"
int main(int argc, const char *argv[])
{
@autoreleasepool
{
//1.实例方法创建对象(继承自NSObject的init方法)
NewClass *object = [[NewClass alloc]init];
//类方法创建对象(自己封装)
NewClass *object2 = [NewClass newObject];
//2.实例方法便利构造器
NewClass *object3 = [[NewClass alloc]initWithMember:@"属性"];
//类方法遍历构造器
NewClass *object4 = [NewClass newObjectWithMember:@"属性"];
//3.对象调用 -> 实例方法
[object objectMethod];
//类名调用 -> 列方法
[NewClass classMethod];
}
return 0;
}