黑马程序员——ios笔记整理——类的声明和实现中的注意事项

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

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

直接上代码(xcode中整理后复制),注释为需要注意的知识点:

 1 主函数:
 2 #import <Foundation/Foundation.h>
 3 #import "Person.h"
 4 int main(int argc, const char * argv[]) {
 5     @autoreleasepool {
 6 //声明一个实例或对象p        
 7         Person *p = [Person new];
 8 //[Person new]相当于[[Person alloc]init]
 9 //[Person new]完成了三个步骤
10 //1.在堆区中开辟内存空间(alloc)2.初始化成员变量值(init)3.返回指针地址 此处赋值给栈区的局部变量p
11         p.age = 7;
12 //点语法的运用,相当于[p setAge:7];
13 //int age = [p Age];
14         NSLog(@"age = %d",p.age);
15         
16     }
17     return 0;
18 }
19 
20 .h声明文件:
21 
22 #import <Foundation/Foundation.h>
23 
24 @interface Person : NSObject{
25 
26     int _age;
27     NSString * _name;
28     
29 }
30 //封装的实现步骤
31 //setter和getter方法的声明
32 //set、get方法的注意事项:
33 //注意:在.h中声明的所有方法作用域都是public类型,不能更改
34     
35 -(void)setAge:(int)age;
36 -(int)age;
37 @end
38 
39 .m实现文件:
40 
41 #import "Person.h"
42 
43 @implementation Person
44 
45 //封装的
46 //setter和getter方法的实现
47 /*
48 
49 set命名规范:
50 (1)方法名必须以set开头
51 (2)Set后面跟去掉下划线的成员变量的名称,首字母大写
52 (3)返回值一定是void 
53 (4)一定要接收一个参数,而且参数类型需要和成员变量的类型一致 
54 (5)形参名不能和成员变量名一样(苹果官方推荐成员变量名前加_以示区分) 
55 get命名规范:
56 (1)一定有返回值,返回值的类型和成员变量的类型一致 (2)方法名为去掉下划线的成员变量名 (3)不需要接收任何参数 
57 
58 */
59 
60 -(void)setAge:(int)age{
61 
62     _age = age;
63     
64 }
65 -(int)age{
66     
67     return _age;
68 
69 }
70 @end
71 
72 /*注意,xcode对该方法做了优化,以上的set、get方法可以直接使用@property(nonatomatic,assign) (int) age;代替,不需要在.m文件中再进行方法的实现,同时可以直接省略成员变量_age的声明,简化如下:*/
73 .h声明文件中:
74 
75 #import <Foundation/Foundation.h>
76 
77 @interface Person : NSObject{
78 
79     //int _age;
80     //NSString * _name;
81     
82 }
83 @property(nonatomic,assign)(int)age;
84 @property(nonatomic,copy)(NSString *)name;
85 //retain为MRC中对于类的内存管理优化 ARC中同类对象需要使用strong
86 @end

在使用@property快速创建成员变量及get、set方法时,应该注意内存管理模式,不同内存管理模式下的注意细则如下:

@property内存管理策略的选择
1.MRC手动内存管理
<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对象) 

posted on 2015-10-30 20:29  你别瞧不起怪兽  阅读(118)  评论(0)    收藏  举报

导航