新建一個工程,創建一個Student類:
// Student.h#import <Foundation/Foundation.h>@interface Student : NSObject+ (void)backHome;- (void)study;- (void)gotoSchoolWith:(NSString *)book;@end// Student.m#import "Student.h"@implementation Student+ (void)backHome{ NSLog(@"這是類方法");}- (void)study{ NSLog(@"在學習");}- (void)gotoSchoolWith:(NSString *)book{ NSLog(@"帶%@課本去上學",book);}@end在ViewController.m中引入頭文件// ViewController.m#import "ViewController.h"#import <objc/message.h> //一定要引入#import "Student.h"在viewDidload中做如下實現- (void)viewDidLoad { [super viewDidLoad]; Student *s = [[Student alloc]init];//初始化一個學生對象 //OC方法調用 [s study];//performSelector 也是OC方法,不推薦用,不安全,方法名錯時不會報錯 [s performSelector:@selector(study)]; [s performSelector:@selector(gotoSchoolWith:) withObject:@"數學"]; //類方法 Class sClass = [Student class];//類類型 [sClass performSelector:@selector(backHome)];//類方法沒有自動補齊要自己敲 //讓s發一個study消息,后邊可接多參數,這里與上述OC方法完全一致 objc_msgSend(s, @selector(study)); objc_msgSend(s, @selector(gotoSchoolWith:),@"語文"); objc_msgSend(sClass, @selector(backHome));//類方法 }注意:從Xcode5開始,蘋果不建議使用底層函數,需要手動設置下圖所示位置配置為NO,方可使用objc_msgSend()
新聞熱點
疑難解答