-
訪問限權問題查看全部
-
屬性就是成員變量的外部接口 屬性可直接在main函數中調用查看全部
-
:(int)x :代表有參數,(int)代表參數類型,x代表參數名; 聲明 - (int)showWithA:(int)a; - (int)showWithA:(int)a andB:(int)b;查看全部
-
加號不能調用成員函數查看全部
-
-表示對象方法用對象名調用,+表示類方法用類名調用查看全部
-
封裝 新建一個類: MyClass.m //.h #import <Foundation/Foundation.h> @interface Myclass : NSObject @property(nonatomic,strong)NSString *className; -(void)report; @end //MyClass.m 實現方法 #import "MyClass.h" @inplementation MyClass -(void)report { NSlog(@"ClassName - %@",_className); } @end //main.m #import <Foundation/Foundation.h> #import "MyClass.h" //引用頭文件MyClass int main(int argc, const char *argv[]) { @autoreleasepool { MyClass *mc = [[MyClass alloc]init];//實例化對象 mc.className = @"我的類";//賦值 [mc report]; } return 0; //運行: ClassName = 我的類 }查看全部
-
自定義初始化方法 //.h -(intancetype)initWithPeopleName:(NSString *)peopleName andPeopleAge:(int)peopleAge // 加了兩個參數 -(int)report -------------------------------- //.m -(intancetype)initWithPeopleName:(NSString *)peopleName andPeopleAge:(int)peopleAge { self = [super init] //固定格式依然要有 if(self) //如果self存在 { _peopleName = peopleName; _peopleAge = peopleAge; } return self; } -(int)report { NSlog(@"peopleName = %@",_peopleName); NSlog(@"peopleAge =%d",_peopleAge); return 20; } -------------------------------- // main.m // 調用部分 int a =[p1 report]; NSlog(@"a = %d",a) People *p2 = [People alloc]initWithPeopleName:@"zhangsan" andPeopleAge:20 People *p3 = [People alloc]initWithPeopleName:@"lisi" andPeopleAge:40 int a2 = [p2 report]; int a3 = [p3 report]; //運行結果: peopleName = zhangsan peopleAge = 20 peopleName = lisi peopleAge = 40查看全部
-
init 方法: 都做了什么? -(id)init; //id 可以返回各種類型的對象,可以直接用id 代替 -(instancetype)init; // 只能返回當前類的類型,如當前是People類就只能返回People 對于初始化方法來說 兩種沒有區別 都可以 但是別的方法來說一般id會導致問題,所以推薦用instancetype 初始化方法的重寫 ------------------------- //.h 方法的重寫 -(instancetype)init; ------------------------- //.m 實現的固定格式(Xcode可以自動檢索補全) -(instancetype)init; { self = [super init]; if (self) { // 例如在People類中的peopleName/peopleAge等就可以在初始化中進行賦值 _peopleName = @"zhangsan"; _peopleAge =30; } return self; } -(int)report { NSlog(@"peopleName = %@",_peopleName); NSlog(@"peopleAge =%d",_peopleAge); return 20; } ------------------------- // main.m // 調用部分 People *p1 = [[People alloc]init]; int a =[p1 report]; //p1調用report方法 NSlog)(@"a = %d",a) // 運行結果 peoleName = zhangsan 打印了初始化中的name和age peopleAge = 30 a = 20 打印了report中的return20查看全部
-
函數名,函數(或方法)中有兩個參數,那么他們之間的“ ”空格,也是函數名的一部分查看全部
-
冒號是函數名的一部分,必須帶有:查看全部
-
----------- 實現文件的調用需要添加一行return返回值; 在main函數中調用的時候:需要有int類型變量來接受返回值: [p1 report1] 變為 int a = [p1 report1]查看全部
-
// 寫方法 // .h文件 #import <Foundation/Foundation.h> @interface People : NSObject - (void)report1; //聲明一個方法 + (void)report2; //-、+分別代表方法的類型,-代表對象方法,+代表類方法 // - 需要用對象名進行調用 + 用類名調用 @end ---------------- //.m #inport "People.h" @implementation People - (void)report1 { NDlog(@"減號:report1") } + (void)report2 { NDlog(@"加號:report2") } @end ------------------------------- //如何在 + — 方法中調用對方? ※static NSString *_peopelName1 - (void)report1 { NDlog(@"減號:report1"); [People report2]; //在對象方法中調用了類方法可直接用類名調用 _peopelName = "123"; //在對象方法中可以對成員變量調用 } + (void)report2 { NDlog(@"加號:report2"); [[People alloc] report1] //在方法中調用類方法需要進行alloc實例化后,用對象調用 ※※※//在+方法中無法調用成員變量,應該如何調用? :可以做一個靜態變量,使用(※static) _peopelName1 = @"890"; //加號方法中只能調用靜態變量 }查看全部
-
// People.h文件 #import <Foundation/Foundation.h> @interface People : NSObject { NSString *_peopleName; int _PeopleAge; int _peopleSex; //或者※※@public NSString *_peopleName int _PeopleAge; int _peopleSex; // } @property(nonatomic,strong)NSString *peopleName; // peopleName不能加_ 否則會導致屬性和成員變量重名 //因為在調用的時候無法分辨是調用成員變量還是屬性 //在類內不會調用屬性 //為了解決這問題,屬性對應的成員變量名會去掉_ //(推薦使用_進行區分) @end ------------------------------------ 在新版本中的變化:可以自動添加成員變量 不需要將其寫在.h中,可以直接寫在.m文件中(寫在※) ————當然屬性依然要聲明在.h中 // People.h文件 #import <Foundation/Foundation.h> @interface People : NSObject { // 刪掉本行NSString *_peopleName;// } @property(nonatomic,strong)NSString *peopleName; @end ---------------------- // .m文件 #import "People.h" @inplementation People { ※int _peopleAge; ※int _peopleSex; } - (instancetype)init { self = [super init]; if(self){ _peopleName = @"123"; //可以直接調用peopleName,只要在.h中聲明過*peopleName 程序會自動生成_peopleName在類內 } return self; }查看全部
-
// People.h文件 #import <Foundation/Foundation.h> @interface People : NSObject { NSString *_peopleName; //name是對象,要加星 int _PeopleAge; //age(0和1表示)和sex不是對象,不加星 int _peopleSex; //如果以上想在類外使用,需要修改他們的級別,寫成: ※※@public NSString *_peopleName int _PeopleAge; int _peopleSex; } @property(nonatomic,strong)NSString *peopleName; //將peopleName,不加“_”聲明為屬性,為了在類外也能訪問成員變量 //屬性就是成員變量的外部接口 //NSString對應strong @end --------- .m #import <Fondation/Fondation.h> #import "People.h" int main(int argc, const char * argv[]){ @autoreleasepool{ People *p1 = [[People alloc] init]; People *p2 = [[People alloc] init]; People *p3 = [[People new]]; NSlog(@"p1 - %p",p1); NSlog(@"p2 - %p",p2); NSlog(@"p3 - %p",p3); p1.peopleName = @"li"; //在類外調用了peopleName } return 0; } ------ .mm #import "People.h" @inplementation People - (instancetype)init { self = [super init]; if(self){ _peopleName = @"zhang" //在類內的使用 } }查看全部
-
新建后有.h 和.m兩個文件 ---------------------------- .h #import <Fondation/Fondation.h> //引頭文件用import //Fondation用到的類庫 @interface People : NSObject @end ------------------------------- .m #import <Fondation/Fondation.h> #import "People.h" //引用類的頭文件(.m不需要) int main(int argc, const char * argv[]){ @autoreleasepool{ //實例化對象... People *p1 = [[People alloc] init];(建議使用這種初始化方法) People *p2 = [[People alloc] init]; People *p3 = [[People new]];(不建議new來初始化) //類名 *對象名 //*代表指針 //[類名 方法名]或者[對象名 方法名]的調用方式,來調用方法 //alloc - 為對象分配內存空間 //init - 進行初始化操作 //p1 p2 p3相互獨立互不影響 NSlog(@"p1 - %p",p1); NSlog(@"p2 - %p",p2); NSlog(@"p3 - %p",p3); //按照指針打印三個對象 } return 0; }查看全部
舉報
0/150
提交
取消