• Objective的头文件@interface属性


    1 前言

    最近有个疑惑 @interface中的属性和@property声明的属性有什么区别呢,经过上网搜索和实践验证,个人总结了几点,共同学习一下。

    2 详述

    例子

    PropertyModel.h

     

    #import <Foundation/Foundation.h>
    
    @interface PropertyModel : NSObject{
        NSString* sex;
        @public NSString* name;
        @private NSString* classes;
    }
    
    @property(nonatomic,copy)NSString* sexName;
    @property(nonatomic,copy)NSString* classesName;
    @end


    SubProModel.m

     

    #import "SubProModel.h"
    
    @implementation SubProModel
    
    -(void)testSub{
    //    self.newClasses =  self->classes;//Wrong:private property
        self.newSexName = self->sex;
        self.newName = self->name;
    }
    
    @end


     

    main.m

    #import <Foundation/Foundation.h>
    #import"PropertyModel.h"
    
    
    int main(int argc, const char * argv[])
    {
    
        @autoreleasepool {
            
            NSLog(@"Hello, World!");
            PropertyModel* pro = [[PropertyModel alloc] init];
    //        NSString* temp = pro->sex;//Wrong:pro is protected
            NSString* temp = pro->name;
        }
        return 0;
    }


    2.1 本类中

    对于PropertyModel的@interface中的属性:

        NSString* sex;

        @public NSString* name;

        @private NSString* classes;

    sex为默认的protect属性只允许本类和子类访问。

    name为共有的所有类都能访问。

    classes为私有的只有子类访问。

    2.2 本类访问

     

     

    #import "PropertyModel.h"
    
    @implementation PropertyModel
    
    -(void) testPro{
        self.sexName = sex;
        self.classesName = classes;
    }
    
    @end


    可以直接调用属性名称访问。

    2.3 外部类访问

     

     

    #import "SubProModel.h"
    
    @implementation SubProModel
    
    -(void)testSub{
    //    self.newClasses =  self->classes;//Wrong:private property
        self.newSexName = self->sex;
        self.newName = self->name;
    }
    
    @end


    需要使用“->”访问指针形式访问。

    3 结语

    以上是所有内容,希望对大家有所帮助。多的就不说了,可以下载Demo详细观看他们的区别。

    Demo下载地址:http://download.csdn.net/detail/u010013695/5539117


  • 相关阅读:
    Ubuntu 16.04远程登录服务器--ssh的安装和配置
    设置淘宝源
    shell 循环 read line
    apt-get update 报错 W: Unknown Multi-Arch type 'no' for package 'compiz-core'
    expdp dblink
    ubuntu apt-update NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32
    listener.log文件过大导致oracle假死
    rsync_ssh
    ssh多主机
    elk大纲
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3125157.html
Copyright © 2020-2023  润新知