zoukankan      html  css  js  c++  java
  • Objective的头文件@interface属性

    源码:http://files.cnblogs.com/ios8/TestPropertyDemo.zip

    1 前言

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

    2 详述

    例子

    PropertyModel.h

    1. #import <Foundation/Foundation.h>  
    2.   
    3. @interface PropertyModel : NSObject{  
    4.     NSString* sex;  
    5.     @public NSString* name;  
    6.     @private NSString* classes;  
    7. }  
    8.   
    9. @property(nonatomic,copy)NSString* sexName;  
    10. @property(nonatomic,copy)NSString* classesName;  
    11. @end  



    SubProModel.m

     
    1. #import "SubProModel.h"  
    2.   
    3. @implementation SubProModel  
    4.   
    5. -(void)testSub{  
    6. //    self.newClasses =  self->classes;//Wrong:private property  
    7.     self.newSexName = self->sex;  
    8.     self.newName = self->name;  
    9. }  
    10.   
    11. @end  



    main.m

     
    1. #import <Foundation/Foundation.h>  
    2. #import"PropertyModel.h"  
    3.   
    4.   
    5. int main(int argc, const char * argv[])  
    6. {  
    7.   
    8.     @autoreleasepool {  
    9.           
    10.         NSLog(@"Hello, World!");  
    11.         PropertyModel* pro = [[PropertyModel alloc] init];  
    12. //        NSString* temp = pro->sex;//Wrong:pro is protected  
    13.         NSString* temp = pro->name;  
    14.     }  
    15.     return 0;  
    16. }  



    2.1 本类中

    对于PropertyModel的@interface中的属性:

        NSString* sex;

        @public NSString* name;

        @private NSString* classes;

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

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

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

    2.2 本类访问

     
    1. #import "PropertyModel.h"  
    2.   
    3. @implementation PropertyModel  
    4.   
    5. -(void) testPro{  
    6.     self.sexName = sex;  
    7.     self.classesName = classes;  
    8. }  
    9.   
    10. @end  



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

    2.3 外部类访问

     
    1. #import "SubProModel.h"  
    2.   
    3. @implementation SubProModel  
    4.   
    5. -(void)testSub{  
    6. //    self.newClasses =  self->classes;//Wrong:private property  
    7.     self.newSexName = self->sex;  
    8.     self.newName = self->name;  
    9. }  
    10.   
    11. @end  



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

    3 结语

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

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

  • 相关阅读:
    arp -s 157.55.85.212 00-aa-00-62-c6-09 .... Adds a static entry.
    怎么查询局域网内全部电脑IP和mac地址等信息?
    服务器网页GZIP压缩怎么配置
    windows远程桌面端口修改
    防止ARP欺骗的方法!!!
    怎么查询局域网内全部电脑IP和mac地址..
    DedeTag Engine Create File False提示的种种原因及解决方法
    Native&nbsp;SQL
    冲销物料凭证:&#039;MBST&#039;&nbsp;VS&nbsp;&#039;MBRL&#039;
    BAPI_GOODSMVT_CREATE物料凭证创建…
  • 原文地址:https://www.cnblogs.com/ios8/p/Objective-interface.html
Copyright © 2011-2022 走看看