-
访问限权问题查看全部
-
属性就是成员变量的外部接口 属性可直接在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
提交
取消