ios知识整理——类的声明和实现

来源:互联网 发布:淘宝客微信采集软件 编辑:程序博客网 时间:2024/06/16 21:01

一个类完整的类包括:类名,实例变量/属性,功能/行为

声明:使用@interface @end关键字 实现:使用@implementation @end关键字


主函数:#import <Foundation/Foundation.h>#import "Person.h"int main(int argc, const char * argv[]) {    @autoreleasepool {//声明一个实例或对象p                Person *p = [Person new];//[Person new]相当于[[Person alloc]init]//[Person new]完成了三个步骤//1.在堆区中开辟内存空间(alloc)2.初始化成员变量值(init)3.返回指针地址 此处赋值给栈区的局部变量p        p.age = 7;//点语法的运用,相当于[p setAge:7];//int age = [p Age];        NSLog(@"age = %d",p.age);            }    return 0;}.h声明文件:#import <Foundation/Foundation.h>@interface Person : NSObject{    int _age;    NSString * _name;    }//封装的实现步骤//setter和getter方法的声明//set、get方法的注意事项://注意:在.h中声明的所有方法作用域都是public类型,不能更改-(void)setAge:(int)age;-(int)age;@end.m实现文件:#import "Person.h"@implementation Person//封装的//setter和getter方法的实现/*set命名规范:(1)方法名必须以set开头(2)Set后面跟去掉下划线的成员变量的名称,首字母大写(3)返回值一定是void (4)一定要接收一个参数,而且参数类型需要和成员变量的类型一致 (5)形参名不能和成员变量名一样(苹果官方推荐成员变量名前加_以示区分) get命名规范:(1)一定有返回值,返回值的类型和成员变量的类型一致 (2)方法名为去掉下划线的成员变量名 (3)不需要接收任何参数 */-(void)setAge:(int)age{    _age = age;    }-(int)age{        return _age;}@end注意,xcode对该方法做了优化,以上的set、get方法可以直接使用@property(nonatomatic,assign) (int) age;代替,不需要在.m文件中再进行方法的实现,同时可以直接省略成员变量_age的声明,简化如下:.h声明文件中:#import <Foundation/Foundation.h>@interface Person : NSObject{    //int _age;    //NSString * _name;    }@property(nonatomatic,assgin)(int)age;@property(nonatomatic,copy)(NSString *)name;//retain为MRC中对于类的内存管理优化 ARC中同类对象需要使用strong@end</span></span>



@property内存管理策略选择

@property内存管理策略的选择
1.非ARC
<1> copy : 只用于NSString\block
<2> retain : 除NSString\block以外的OC对象
<3> assign : 基本数据类型、枚举、结构体(非OC对象),当2个对象相互引用,一端用retain,一端用assign

2.ARC
<1> copy : 只用于NSString\block
<2> strong : 除NSString\block以外的OC对象
<3> weak : 当2个对象相互引用,一端用strong,一端用weak 4> assgin : 基本数据类型、枚举、结构体(非OC对象) 


0 0
原创粉丝点击