1. 程式人生 > >iOS的類方法和例項方法區別與使用 + -

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

作用:必須先建立例項物件,相當於迴應訊息模式。例項物件呼叫的方法。 呼叫:[物件 方法】

可以使用自身屬性