Object-c初步学习 二

1.关键字 @property 和 @synthesize 及 #pragma mark 的使用

person.h 文件

#import

NS_ASSUME_NONNULL_BEGIN

@interface Person: NSObject{
//    int _age;
//    int _no;
}

//如果只在.h声明文件中定义property,(相当于生成set/get方法,如果没有成员变量,会自动生成),xcode4.2以上后自动实现setget方法,可省略synthsize实现
//如果没有定义_age,_no,这里会自动生成成员变量 _age _no

@property int age;
@property int no;

- (void)test;

@end

NS_ASSUME_NONNULL_END

person.m 文件

#import
#import "Person.h"

@implementation Person

//这里相当于实现setget方法,可不写(自动实现)
//@synthesize age;
//@synthesize no;

//这里相当于实现setget方法,并且使用父类的=后面的成员变量(如果类不存在该变量,可以自动生成变量)
//@synthesize age = _age;
//@synthesize no = _no;

//pragma mark - ... 这个表示分类显示方法,没有 - 表示方法的直接提示,点击跳转使用,点击文件会直接提示,点击可跳转到当前注释的地方,类似java的 /** 方法提示 */
#pragma mark - 内部方法
#pragma mark 这个是初始化方法
- (id)initWith{
    [super init];
    return self;
}

#pragma mark - 这个是测试方法
- (void)test{
    NSLog(@"age is %i and no %i",self.age,self.no);
    NSLog(@"_age is %i and _no %i",_age,_no);
}

//调用的销毁的生命周期 - 表示对象被释放
- (void)dealloc{
    NSLog(@"我被销毁了");

     //其他代码最好加在super 回收方法的前面
    [super dealloc];
}

@end

2.对象的计数器 和 回收

创建对象使用alloc,new,copy ,会在对象内部创建一个计数器参数。调用retain方法,会使计数器加一,使用release,会使计数器减一,当计数器的值为0,会调用dealloc方法回收对象。retainCount 方法返回对象的当前计数器数目

       Person *per = [[Person alloc] init];
        per.age = 10;
        per.no = 20;
        [per test];
        
        //retain 代表计数器加一
//        [per retain];
        
        //retainCount 代表当前对象的计数器数目
        NSLog(@"%zi",per.retainCount);
        
        //release 代表计数器减一
        [per release];

你可能感兴趣的:(objective-c)