iOS的類方法和例項方法區別與使用 + -
阿新 • • 發佈:2018-11-12
1.什麼是類方法?
在OC類定義方法時以 + 開頭的方法,又稱為靜態方法。如:+ (viod)方法名{ }.
作用:不用例項話就可以直接呼叫的方法,一般是有返回值的,返回對應的例項(陣列、字串等),還有可能就是本身類的例項物件。常用於一些common或者UtiKit等公共方法類中。如對NSString ,UIColor 等 Extension時。 呼叫方式:[類名 方法名】
限制: 不能使用自身屬性 ,想要使用的類方法就要在定義類的.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 ];
作用:必須先建立例項物件,相當於迴應訊息模式。例項物件呼叫的方法。 呼叫:[物件 方法】
可以使用自身屬性