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

  • 相关阅读:
    SEO在网页制作中的应用
    日期控件选2016-01-01却变为2015-01-01问题
    IE8兼容placeholder的方案
    各种乱码,编码问题设置方法整理(UTF-8)
    JQuery简单实现图片轮播效果
    解决 jsp eclipse异常 【The import javax.servlet cannot be resolved】
    tomcat加载不了spring-webjar终极解决办法
    MyEclipse Web Project导入Eclipse Dynamic Web Project,无法部署到tomcat问 题
    2020-11-01助教一周总结(第九周)
    2020-10-25助教一周总结(第八周)
  • 原文地址:https://www.cnblogs.com/ios8/p/Objective-interface.html
Copyright © 2011-2022 走看看