Objective的头文件@interface属性
源码:http://files.cnblogs.com/ios8/TestPropertyDemo.zip
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
Objective的头文件@interface属性的更多相关文章
- UIButton 头文件常见属性和方法
UIButton头文件常见属性 1.属性 contentEdgeInsets: default is UIEdgeInsetsZero.设置内容四边距,默认边距为0 @property(nonatom ...
- UILabel头文件常见属性
text : default is nil 文本属性,默认值是 nil @property(nullable, nonatomic,copy) NSString *text; font : defau ...
- Viewing the interface of your Swift code,查看Swift代码的头文件的三种方法
Technical Q&A QA1914 Viewing the interface of your Swift code Q: How do I view the interface ...
- Objective-C声明在头文件和实现文件中的区别
Objective-C声明在头文件和实现文件中的区别 转自codecloud(有整理) 调试程序的时候,突然想到这个问题,百度一下发现有不少这方面的问答,粗略总结一下: 属性写在.h文件中和在.m文件 ...
- jni.h头文件详解二
作者:左少华 博客:http://blog.csdn.net/shaohuazuo/article/details/42932813 转载请注明出处:http://blog.csdn.net/shao ...
- jni.h头文件详解一
1.jni.h头文件路径: /usr/lib/jvm/jdk_1.6.0_43/include/jni.h 2.jni.h头文件组成分析图: 3.下面通过上图进行分析讲解jni.h头文件. 一. jn ...
- 【转】 jni.h头文件详解(二)
原文网址:http://blog.csdn.net/shaohuazuo/article/details/42932813 作者:左少华 博客:http://blog.csdn.net/shaohua ...
- NSObject头文件解析 / 消息机制 / Runtime解读 (一)
NSObject头文件解析 当我们需要自定义类都会创建一个NSObject子类, 比如: #import <Foundation/Foundation.h> @interface Clas ...
- #include、#import与@class的使用与头文件循环引用问题
#include #include <>:一般是对系统库文件的引用,编译器会去系统文件文件夹下查找. #include "xxx.h":一般是对自己定义文件的引用,编译 ...
随机推荐
- 结合JSFL/actionscript 实现轮廓动画
动画前半段通过JSFL获取轮廓数据,并在EnterFrame中逐个边缘画出的:后半段机枪动画是美术做好的flash动画. 这里只放出actionscript代码,而JSFL代码涉及到一个工程,暂时保密 ...
- Java常用的非受检异常
IllegalArgumentException 非 null 的参数值不正确 IllegalStateException 对于方法调用而言,对象状态不合适 NullPointException 参数 ...
- 读书笔记——spring cloud 中 HystrixCommand的四种执行方式简述
读了<Spring Cloud 微服务实战>第151-154页, 总结如下: Hystrix存在两种Command,一种是HystrixCommand,另一种是HystrixObserva ...
- Jmeter+maven+Jenkins构建云性能测试平台(mark 推荐)
转自:http://www.cnblogs.com/victorcai0922/archive/2012/06/20/2555502.html Jmeter+maven+Jenkins构建云性能测试平 ...
- 基于贪心算法求解TSP问题(JAVA)
概述 前段时间在搞贪心算法,为了举例,故拿TSP来开刀,写了段求解算法代码以便有需之人,注意代码考虑可读性从最容易理解角度写,没有优化,有需要可以自行优化! 详细 代码下载:http://www.de ...
- 解决FatalThrowableError in EloquentUserProvider.php line 126: Class '\App\User'问题
解决方法:http://stackoverflow.com/questions/28516454/laravel-5-user-model-not-found 总结:是因为我把app下的User移动到 ...
- $(document).ready() 和 window.onload 方法比较
说明 页面加载文档完毕后,浏览器会通过 Javascript 为 DOM 元素添加事件. Javascript 使用 window.onload 方法,而 jQuery 使用 $(document). ...
- Pinyin4j导读
Pinyin4j是Java中的拼音库,作者李民. 拼音这件事其实非常简单,无非是一种映射.但是拼音中包含的学问很多,很多前贤都研究过汉语拼音,提出了多种拼音方案.随着历史变迁,拼音的形式也在不断发生变 ...
- iOS block分析
block是代码块,其本质和变量类似.不同的是代码块存储的数据是一个函数体.使用Block,就可以像其他标准函数一样,传入参数,并得到返回值. 可以把Block当做Objective-C的匿名函数,B ...
- windows下安装phpredis模块 (转)
1.下载: http://pecl.php.net/package/redis/2.2.7/windows 2.下载后 由于里面有两个模块分别是vc6,vc9编译的,我们需要知道我们的Php是vc6还 ...