iOS的类方法和实例方法区别与使用 + -

本文深入解析Objective-C中的类方法与实例方法的区别与应用。类方法以+开头,无需实例化即可调用,常用于公共方法类;实例方法以-开头,需创建实例对象后调用,能访问对象的属性。通过具体示例,帮助读者理解两种方法的特性和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是类方法?
在OC类定义方法时以 + 开头的方法,又称为静态方法。如:+ (viod)方法名{ }.

作用:不用实例话就可以直接调用的方法,一般是有返回值的,返回对应的实例(数组、字符串等),还有可能就是本身类的实例对象。常用于一些common或者UtiKit等公共方法类中。如对NSStringUIColorExtension时。 调用方式:[类名 方法名】

限制: 不能使用自身属性 ,想要使用的类方法就要在定义类的.h文件中声明哟,否则不能直接调用,!

示例如下:



// 默认alpha位1
+ (UIColor *)colorWithHexString:(NSString *)color;

//从十六进制字符串获取颜色,
//color:支持@“#123456”、 @“0X123456”、 @“123456”三种格式
+ (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha;

+ (UIImage *)imageWithOriRenderName:(NSString *)imageName;

使用时

[UIColor colorWithHexString:@"0X123456"];

2.什么是实例方法?
在OC定义中以 - 开头的方法。如: - (viod)方法名{ } 此方法较为常见 诸如我们写的 helper ,

@protocol BoutiqueCourseManagerDelegate <NSObject>
// 由于这里没有任何修饰词所以是默认的代理方法,切记默认的代理方法,如果遵守了协议那就必须实现

- (void)setCourseList:(NSMutableArray *)list;

@end

@interface BoutiqueCourseManager : NSObject
@property(nonatomic,weak)id<BoutiqueCourseManagerDelegate> delegate;
- (void)getCourseByNetwork:(NSInteger)index;
- (void)getCourseByKeyAndPage:(NSInteger)index Key:(NSString *) key;
@end

调用时

//实例化
- (BoutiqueCourseManager *)manager{
    if(!_manager){
        _manager = [[BoutiqueCourseManager alloc] init];
        _manager.delegate = self;
    }
    return  _manager;
}

   [self.manager getCourseByNetwork:page ];

作用:必须先创建实例对象,相当于回应消息模式。实例对象调用的方法。 调用:[对象 方法】

可以使用自身属性

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值