iOS的類方法和實例方法區別與使用 + -

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 ];

作用:必須先創建實例對象,相當於迴應消息模式。實例對象調用的方法。 調用:[對象 方法】

可以使用自身屬性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章